2012-01-27 81 views
1

打开一个Excel文件,试图打开一个Excel文件的连接时,我发现了以下错误:错误与C#

The Microsoft Access database engine cannot open or write to the file ''. It is already    opened exclusively by another user, or you need permission to view and write its data. 

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() 

当我部署到服务器只会出现此问题。我试过两台不同的服务器: 32位& 64位。两者都运行Windows Server 2008 SP 2.代码在我的本地计算机上正常工作(Windows 7)。我已经在两台服务器上安装了Microsoft Office 2007,并希望有必要的DLL能解决这个问题。我用于Excel文件的连接字符串如下:

string result = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + _fileName + ";Extended Properties=\"Excel 12.0;HDR=NO;\""; 

_fileName变量是文件位置的绝对路径。我尝试过直接在网站目录中放置一个文件,并将权限设置为对所有用户完全控制,但仍然无效。

我需要从我的web应用程序中查询excel文件的内容并将它们显示给用户。 excel文件可以有不同的数据输入方式。

有什么我想念我需要做的才能让它在服务器上工作?

+0

顺便说一下,该文件实际上并没有被其他人打开。我知道,因为我自己把文件放在服务器上,并设置了完整的权限,我没有打开文件。我做了仔细检查,以确保文件没有损坏,但在运行代码时未打开。 – 2012-01-27 14:23:56

+2

该文件可以由您自己的应用程序在两个不同的请求中打开两次。 – 2012-01-27 14:29:22

+0

我同意约翰·桑德斯的观点,当我在之前在同一个应用程序或另一个实例中打开文件时,我看到了这个错误,并且没有关闭它并正确地释放引用。 – 2012-01-27 14:41:54

回答