0

ユーザーが Excel ファイルをアップロードできるようにする .NET 3.5 を使用する VB アプリケーションがあります。次に、アプリケーションはこのファイルから読み取り、その内容をデータベースに挿入します。

問題は、本番環境でのみ読み取りが失敗するように見えることです。生成されたエラーは次のとおりです。

ErrorMessage: System.Data.OleDb.OleDbException: Unspecified error
   at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
   at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.OleDb.OleDbConnection.Open()
   at uploader.ReadExcel(String sFile) in E:\path_to_application\uploader.aspx.vb:line 85

uploader.aspx.vb の ReadExcel 関数の 84 行目と 85 行目は次のとおりです。

oConn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sFile + ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";")
oConn.Open()

oConn.Open() は本番環境でのみ失敗します。ローカル マシンでまったく同じコードベースが期待どおりに動作します。

  • sFileファイルは、変数で指定されたパスに実際に存在します
  • この質問は、同時接続制限を超えると問題になる可能性があることを示唆していましたが、IIS でアプリケーションを再起動した後でも問題は解決しませんでした
  • 権限の問題ではないようです。サーバー上のすべてのユーザー グループには、アップロードされたファイルに対して少なくとも読み取りと実行があります。

実稼働環境とローカル環境の間で他にどのような違いを探すことができますか? この OleDB 接続を開くことがこのように失敗する原因として、他に何が考えられるでしょうか?

更新: 回避策は、IIS でアプリケーション プールをリサイクルすることです。それを修正するためにリセットされているものについてのアイデアはありますか?

4

2 に答える 2

1

私自身は OleDb を使用したことはありませんが、Jet ドライバーを使用したことがあります。OS 環境に適したバージョンのドライバーを使用することが非常に重要です。しばらくの間、64 ビット ドライバーはありませんでしたが、2010 年にリリースされました。ここからダウンロードできます。

http://www.microsoft.com/en-us/download/details.aspx?id=13255

別のオプションとして、アプリケーションを 32 ビット モードで実行することもできます。これが問題ではない可能性もありますが、結果に基づくと、かなり可能性が高いようです。

于 2013-01-15T17:34:59.633 に答える
0

probackpacker は、64 ビット OLEbd ドライブがないため、アプリケーションが 64 ビット環境にある場合は動作しないと言っています。

于 2013-01-15T17:12:48.587 に答える