我有一个带有本地和远程表的Access数据库。远程表通过ODBC连接链接到Server数据库。
打开Access数据库时,可以打开并查看本地表和远程表的内容。因此,这证明从ASP.NET应用程序连接远程表应该是没有问题的。
现在,当我在Visual中运行我的ASP.NET应用程序时,我可以在访问中访问本地和远程表,没有问题。
当我将我的应用程序放入IIS并从本地主机运行应用程序时,我只能用我的代码访问访问文件中的本地表,但不能访问远程表!当我尝试时,我会得到以下错误:“ODBC--连接'FMPOS_live‘失败。”但是请记住,我没有问题直接从Access打开远程表,但由于某些原因,我无法从我在IIS中运行的应用程序访问它们。
是否有某个权限,根据访问文件的对象或内容,确定该进程是否可以使用远程表?
发布于 2013-08-27 23:28:53
问题在于应用程序池标识。Access不允许通过默认进程ApplicationPoolIdentity标识访问它的远程表。我将身份更改为我的windows用户登录,它起作用了!
说明: 1.转到网站的应用程序池2。点击它并选择高级设置3。在Process标识下,选择自定义帐户并键入您的用户名和密码用于您的窗口登录。
发布于 2013-08-22 21:37:17
从Visual运行时,您将使用自己的凭据连接到SQL服务器。
从IIS运行时,您将根据应用程序池的配置使用ApplicationPoolIdentity、网络服务或本地系统。您将需要允许登录和读取任何帐户的网站是运行的特权。
在从VS运行的情况下,它可能是工作的,因为您可能是SQL服务器上的系统管理员。
试着在任务管理器中检查用户正在运行的"w3wp.exe“。
在ApplicationPoolIdentity的情况下,您要查找的用户名是IIS \NameOfApplicationPool。
https://stackoverflow.com/questions/18391176
复制相似问题