ユーザーが 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 でアプリケーション プールをリサイクルすることです。それを修正するためにリセットされているものについてのアイデアはありますか?