我有一个使用 .NET 3.5 的 VB 应用程序,它允许用户上传 Excel 文件。然后应用程序从该文件中读取并将其内容插入到数据库中。
问题是读取似乎仅在我们的生产环境中失败。这是产生的错误:
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 中回收应用程序池。关于修复它的重置是什么的任何想法?