我有一个将 Excel .xls 文件上传到文件系统的应用程序,使用对象实例上的 .open() 方法使用 oledbconnection 对象打开文件,然后将数据存储在数据库中。文件上传和写入文件系统工作正常,但尝试在我们的生产服务器上打开文件时出现错误仅。该应用程序在另外两台服务器(开发和测试服务器)上运行良好。
以下代码在 Exception.Message 中生成“未指定错误”。
引用:
System.Data.OleDb.OleDbConnection x = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + location + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");
try
{
x.Open();
}
catch (Exception exp)
{
string errorEmailBody = " OpenExcelSpreadSheet() in Utilities.cs. " + exp.Message;
Utilities.SendErrorEmail(errorEmailBody);
}
:结束引用
服务器的 c:\\temp 和 c:\Documents and Settings\\aspnet\local settings\temp 文件夹都给予\aspnet 完全控制权。
我认为存在某种权限问题,但似乎无法发现上述文件夹的权限与上传 Excel 文件的文件夹/目录之间的任何区别。相同的位置用于保存文件和打开它,这些方法在我的工作站和两个 Web 服务器上工作。 Windows 2000 SP4 服务器。
最佳答案
虽然权限问题可能更常见,但您也可能遇到来自 Windows 文件系统/Access Jet DB 引擎连接限制(我认为是 64/255)的错误。如果您破坏了 255 Access 读/写并发连接或每个进程 64(?) 连接限制,您可能会遇到完全相同的错误。至少我在一个应用程序中遇到过这种情况,在这个应用程序中,连接不断被创建并且从未正确关闭。一个简单的 Conn.close();
投入使用,生活很美好。我想 Excel 可能有类似的问题。
关于c# - OLEDBConnection.Open() 生成 'Unspecified error',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/96150/