2011-09-26 10 views
0

私はパスを\\machinecap\platform\inで読んでいます。FileSystemWatcher C#の許可の問題

プラットフォームは、ローカルでE:\cappuccino\platformになるシェアです。このアプリケーションは、C#.NET 2.0で作成されたWindowsサービスで、FileSystemWatcherを使用して、ファイルの作成および名前変更のために\\machinecap\platform\inというパスを読み取ります。

\\machinecap\platform(すべてのサブディレクトリを含む)から「フルコントロール」のアクセス権がありますが、これはサーバー上の他のフォルダ(Windows Server 2003)にはアクセスできません。

問題は、ファイルがサーバーに到着したときにサービスが停止し、イベントビューアにログメッセージが記録されないということです。問題を追跡しようとすると、サーバーでログオンし、アプリケーションが実行するすべての手順を手動で実行しようとしました。しかし、私はこれらのファイルを削除することはできません...エラーメッセージが表示されます:"E:\ is not accessible. Access is denied."

もちろん、私はE:\ルートフォルダへのアクセスはありませんE:\cappuccino\platform ...これは問題ですか?私はE:\への読み取りアクセス権を与えなければなりません。E:\cappuccino\platformを読むことができますか?

MORE INFO

例外メッセージ:

Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 'Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. 
An attempt was made to load a program with an incorrect format. 
File name: 'Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' 
    at TestRiskStore.ArisReportReader.CreateOrRename(Object source, FileSystemEventArgs e) 
    at System.IO.FileSystemWatcher.CompletionStatusChanged(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* overlappedPointer) 
    at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) 

WRN: Assembly binding logging is turned OFF. 
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. 
Note: There is some performance penalty associated with assembly bind failure logging. 
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. 

が、私はわからない、問題はこれに関連していると思います..私はOracle.DataAccessコンポーネントを使用していることに注意してください....任意のアイデアどのようにこの問題を解決するには?

+0

もう1つのコメント... cmdを開き、 'E:[enter]'とタイプすると、同じエラーメッセージが表示されます:アクセスが拒否されました – jyz

+4

投稿したエラーメッセージは「アクセス拒否」とは関係ありません。間違った例外を投稿しましたか? –

+0

これは私が持っているエラーメッセージです。 "アクセスが拒否されました"というのはサーバーの調査の後で、アセンブリに関するアクセス許可がないことに関連している可能性があると考えていました。しかし、私は既にそれを確認しています( 'cacls'でチェックしました) – jyz

答えて

0

私のマシンは32ビットで、サーバーは64ビットで、どのプラットフォームでも動作するようにアプリケーションをコンパイルしていました。問題は、サーバーにインストールされたOracleDataAccessコンポーネントが32ビットであるため、アセンブリがGAC_32フォルダにのみインストールされていることです。したがって、アプリケーションが64ビットモードで実行しようとすると、アセンブリが見つかりません。

私はアプリケーションをx86(32ビット)として再コンパイルしただけです。これでアプリケーションは32ビットモードで実行され、正しいフォルダ内のアセンブリが検索されます。

関連する問題