间歇性问题 – OleDbConnection.Open()抛出System.Data.OleDb.OleDbException:未指定的错误

我们组织中的生产应用程序使用Excel 2003文件通过Web应用程序处理用户提交的数据。 这个应用程序在大多数情况下都可靠运行 最近,当调用OleDbConnection.Open()方法时,应用程序开始间歇性地抛出“System.Data.OleDb.OleDbException:Unspecified error”。 错误会一直持续到应用程序池被回收为止,届时所有的function都将如预期的那样运行。 在Windows应用程序事件日志中没有捕获错误。

ASP.NET Web应用程序位于Windows Server 2003 32位计算机上的WSS 3.0中的Web部件中。 该应用程序旨在防止任何并发问题。 系统functionID是唯一可以访问临时文件存储的帐户,并且内置了一些机制以确保文件在使用唯一命名约定和上载跟踪子系统进行处理期间不会被另一个上载覆盖。

任何有识之士将不胜感激。

我们正在使用以下代码从Excel 2003文件中检索数据:

public static DataTable GetWorksheetData(string filePath) { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder { DataSource = filePath }; builder.Provider = "Microsoft.Jet.OLEDB.4.0"; builder["Extended Properties"] = "Excel 8.0;IMEX=1;HDR=YES"; DataTable table = new DataTable(); try { // Creates an OleDbConnection for the excel file using (OleDbConnection connection = new OleDbConnection(builder.ConnectionString)) { connection.Open(); string sheetName = GetWorksheet(connection, "Template"); if (!string.IsNullOrEmpty(sheetName)) { using (OleDbCommand command = connection.CreateCommand()) { try { command.CommandText = string.Format("SELECT * FROM [{0}]", sheetName); using (OleDbDataAdapter adapter = new OleDbDataAdapter(command)) using (DataSet dataSet = new DataSet()) { adapter.Fill(dataSet); table = dataSet.Tables[0]; } } finally { connection.Close(); } } } else { throw new InvalidWorksheetException(); } } } catch (Exception ex) { Logger.Write(LogMsgSeverity.Error, ex); throw; } return table; } private static string GetWorksheet(OleDbConnection connection, string sheetName) { string validSheetName = string.Empty; using (DataTable tables = connection.GetSchema("Tables")) { DataRowCollection rows = tables.Rows; if (rows.Count > 0) { foreach (DataRow row in rows) { if (row["Table_Name"].ToString().Contains(sheetName)) { validSheetName = sheetName; } } } } return validSheetName; }