2016-10-24 6 views
0

C#コードを使用してREST API/Webmethods内のネットワーク/共有ドライブにあるmsアクセスデータベース(mdb/accdbファイル)に接続しようとしています。コンソールアプリケーションを使用していてもRest APIで使用されている場合は接続エラーがスローされているため、同じコードが正常に機能しています。つまり、Rest API(VS 2013)を使用して呼び出しが行われます。休憩サービスでMS Access DB接続エラーが発生しました

例外:

System.Runtime.InteropServices.SEHException (0x80004005): External component has thrown an exception. 

System.Runtime.InteropServices.SEHException was unhandled by user code 
    HResult=-2147467259 
    Message=External component has thrown an exception. 
    Source=System.Data 
    ErrorCode=-2147467259 

コード:

string connectionString = @"Provider=Microsoft.ACE.OLEDB.12;" + @"Data Source=\\network folder\Shared\filesecure.mdb;Jet OLEDB:Database Password=somepassword;Persist Security Info=true;"; 

using (OleDbConnection oledbConnection = new OleDbConnection(connectionString)) 
{ 

connection.Open(); // Getting exception here 
} 

すべてのヘルプは理解されるであろう。

+0

同じマシンにあるデータベースファイルを使用してWebメソッドをテストしてみてください。それがうまくいく場合は、LANリソース(他のマシンの共有フォルダなど)にアクセスする権限を持たないWebサービスコードを実行しているアカウントが原因である可能性があります。 –

+2

また、Webサービスがx64ビットとして実行されている可能性があることに注意してください。これは、デフォルトのx32ドライバではなく、ACEにx64ビットドライバを使用する必要があることを意味します。 –

答えて

0

私は

サービスは、そのためのAccessDatabaseEngine_x64.exeドライバをインストールするために必要なのx64ビット、上で実行されている上記の回答の助けを借りて問題を修正しました。私は私のマシンに32ビットオフィスを持っていました。

追加ステップ

a。最初に、HKLM \ SOFTWARE \ Microsoft \ Office \ 14.0 \ Common \ FilesPathsのレジストリからmso.dllエントリを削除します。

b。セットアップ場所からコマンドプロンプトを使用してAccessDatabaseEngine_x64.exe/passive/quietをインストールしてください

関連する問題