1

我正在尝试执行以下操作:

  1. 用户进入网页,上传 XLS 文件
  2. 使用 ADO .NET 打开 XLS 文件,使用 JET 引擎连接到 Web 服务器上本地上传的文件

这一切都在本地运行良好(我的机器作为客户端和 Web 服务器) - 实际上正在使用远程客户端在客户的 Web 服务器上工作,但在尝试使用远程客户端进行内部测试时无法正常工作。

我得到的错误是:

TIME:       [10/1/2008 11:15:28 AM]
SEVERITY:   EXCEPTION
PROGRAM:    Microsoft JET Database Engine
EXCEPTION:  Unspecified error
STACK TRACE:       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()

产生错误的代码是:

OleDbConnection l_DbConnection;
        OleDbDataAdapter l_DbCommand;
        DataSet l_dataSet = new DataSet();

        l_DbConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; data source=\"" + l_importFileName + "\";Extended Properties=Excel 8.0;");
        l_DbCommand = new OleDbDataAdapter("select * from [Sheet1$]", l_DbConnection);

        //try using provider to read file
        try { l_DbConnection.Open(); }

对“打开”的调用引发了上述异常。

该站点正在使用模拟,并且所有呼叫都是在用户登录客户端时进行的。到目前为止我所做的一切都是为了让这个工作:

按照此处的步骤http://support.microsoft.com/kb/251254/并将 TMP/TEMP 环境变量目录的权限分配给我用来测试的用户(也将权限分配给 ASPNET,然后分配给“每个人”作为一个毯子“这个权限相关吗?”测试)。

确保文件正在上传,并且 XLS 文件本身继承了允许用户完全访问文件的目录权限。为了以防万一,我还将此目录权限授予“每个人” - 这也没有帮助。

我不必更改任何环境变量,因此在进行这些更改后不必重新启动 - 但我不应该让 Windows 文件夹/文件权限生效。

在这一点上,我完全不知所措

4

2 回答 2

2

好的,想通了——

事实证明,即使 IIS 使用模拟并将 TMP/TEMP 环境变量设置为 C:\WINDOWS\Temp,ASP.NET 进程仍在 ASPNET 帐户下运行,并且每个用户都需要对 Documents and Settings\ASPNET\ 的权限本地设置\临时文件夹

解决此问题的另一种方法可能是创建一个新的应用程序池,并让该应用程序池作为对正确文件夹而不是 ASPNET 具有权限的用户运行

于 2008-10-01T19:06:29.993 回答
0

转到目录 \Documents and Settings\"machineName"\ASPNET\Local Settings\Temp 并授予用户“EveryOne”读取、写入权限然后它会正常工作。此外,您必须在 web.config 文件中设置“”

于 2009-02-20T13:42:00.813 回答