2013-01-15 42 views
0

我有一个VB应用程序使用.NET 3.5,允许用户上传Excel文件。应用程序然后从该文件读取并将其内容插入到数据库中。OleDB连接到excel文件只在生产中失败

问题是读取似乎只在我们的PRODUCTION环境中失败。这里的所产生的误差:

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线84和85的功能READEXCEL的:

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可变
  • This question指定的路径确实存在表明它可能是与超过并发连接数限制的问题,但即使有IIS重新启动应用程序后,问题依然存在
  • 它似乎并不成为一个权限问题,在服务器上的所有用户组至少具有读取&执行对上传的文件

我可以看看有什么其他方面的差异对于b在生产和本地环境之间?还有什么可能导致打开这个OleDB连接失败像这样?

UPDATE:解决方法似乎是回收IIS中的应用程序池。任何想法是什么,这是重置,修复它?

+1

您的应用程序的应用程序池是作为定义的Windows帐户运行还是作为默认应用程序池用户运行? –

+0

它是一个已定义的Windows帐户和Guests组的成员,它似乎对所述目录具有读取和执行权限。 –

+1

机器和服务器的位数(32/64)是多少? –

回答

0

probackpacker会说,如果你的应用程序是在64位环境中它不会工作, 因为没有64位OLEbd驱动

1

我还没有使用的OleDb自己,但我已经与Jet工作驱动程序。为操作系统环境提供适当的驱动程序版本非常重要。有一段时间,没有64位驱动程序,但他们发布了2010年一你可以在这里下载:

http://www.microsoft.com/en-us/download/details.aspx?id=13255

另一种选择可能是运行32位模式的应用程序。也有可能这不是问题,但根据你的结果看起来很可能。

+0

这是一个重要的观点,但在我的情况下,这两台机器都是32位的。 –

+0

这使事情变得更简单。我假设你已经检查过是否安装了驱动程序?我认为它通常与Microsoft Office一起安装,但我不确定。 –