0

我有一个带有本地和远程表的 Access 数据库。远程表通过 ODBC 连接链接到 Sql Server 数据库。

当我打开 Access 数据库时,我可以打开并查看本地和远程表的内容。所以这证明从 ASP.NET 应用程序连接到远程表应该没有问题

现在,当我在 Visual Studio 中运行我的 ASP.NET 应用程序时,我可以毫无问题地访问 Access 中的本地和远程表。

一旦我将我的应用程序放入 IIS 并从 localhost 运行应用程序,我只能使用我的代码访问 Access 文件中的本地表,但不能访问远程表!我在尝试时收到以下错误:“ODBC--连接到 'FMPOS_live' 失败。” 但请记住,我直接从 Access 打开远程表没有问题,但由于某种原因,我无法从在 IIS 中运行的应用程序访问它们。

某处是否有权限取决于访问 Access 文件的人员或内容,确定该进程是否可以使用远程表?

4

2 回答 2

1

从 Visual Studio 运行时,您使用自己的凭据连接到 SQL 服务器。

从 IIS 运行时,您使用 ApplicationPoolIdentity、网络服务或本地系统,具体取决于应用程序池的配置。您需要允许网站运行在哪个帐户下的登录和读取权限。

在从 VS 运行的情况下,它可能会工作,因为您可能是 SQL 服务器上的系统管理员。

尝试在任务管理器中检查正在运行“w3wp.exe”的用户。

对于 ApplicationPoolIdentity,您要查找的用户名将是 IIS APPPOOL\NameOfApplicationPool。

于 2013-08-22T21:37:17.870 回答
0

问题是应用程序池标识。Access 不允许通过默认进程 ApplicationPoolIdentity Identity 访问其远程表。我将身份更改为我的 Windows 用户登录名,它起作用了!

说明: 1. 转到您网站的应用程序池 2. 单击它并选择高级设置 3. 在进程模型标识下,选择自定义帐户并输入您的 Windows 登录用户名和密码。

于 2013-08-27T23:28:53.963 回答