我们在Windows Server 2003 Enterprise Edition上的IIS 6上运行了一个C#/ ASP.NET(2.0)应用程序.此应用程序使用OleDb读取Excel文件,但有些情况下我们从应用程序中抛出"未指定的错误"异常.
在打开之前,文件由我们的文件上传代码存储在临时目录中.由于我们在IIS中启用了匿名访问,并且由于我们还在web.config中使用模拟,因此文件夹C:\ Windows\Temp \具有能够创建的Internet来宾用户帐户(IUSR_ [MachineName])的适当权限,修改和删除那里的文件.
OleDb连接字符串:
Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\ Windows\Temp\tmp123.tmp.xls;
扩展属性="Excel 8.0; HDR =是; IMEX = 1;"
[上面的"数据源"属性将针对每个文件进行更改.]
The stack trace of the exception is: System.Exception: FileParsingFailed ---> 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()
解决方法:
到目前为止,我们可以提出的唯一解决方法是执行iisreset(我们还将应用程序池回收配置为每天在IIS中执行一次,但它似乎没有帮助,因为问题有时会连续几天持续存在).虽然这不是一件好事,但更糟糕的是,我们在同一网站上有其他应用程序,每当我们重置IIS时都会受到影响.
问题:
1.我们如何解决这个错误,因为它偶尔发生,我们没有看到一个模式?
2.除了OleDb之外,还有更好(和免费)的方法来处理来自C#/ ASP.NET的Excel文件吗?(我们不希望在服务器上安装MS Office,因为它不是微软推荐的)
我们的局限性:
1.我们坚持使用MS Office 2003(.xls)格式,无法转向MS Office 2007(OOXML)格式.
2.我们不使用CSV的原因是因为我们的数据中可能有逗号(即使我们使用引用也很难处理),我们在电子表格中也使用了多个工作表(这不能用CSV完成) .
谢谢!:)
更新:
谢谢,基思.它似乎与Jet引擎有关,但我们使用它是因为缺乏(免费且易于使用)替代品.
谢谢,乔.但我们的预算有限 - 所以我们主要是寻找免费的工具/库.