我有两个网站的IIS7.5,我的网络服务器上有一个Access数据库。
第一个网站使用特定网络帐户进行匿名身份验证(假设为'jim.smith')。
第二个网站已启用Windows身份验证。
我已经写了一些ASP来使用与Access数据库的DSN-Less连接,我在两个网站都使用相同的代码。
使用与第一个网站匿名设置('jim.smith')相同的网络帐户登录到计算机时 - 在浏览器中查看时,第一个网站可以访问数据库,第二个网站没有。
错误消息是:80004005 Microsoft Jet数据库引擎无法打开文件“...”。它已由其他用户专门打开,或者您需要获得查看其数据的权限。
绝对不会被其他用户打开。
因此网络用户'jim.smith'通过匿名设置访问第一个网站。
网络用户'jim.smith'通过windows auth。
访问第二个网站为什么访问数据库的工作是从网站一,而不是网站二??
有谁知道如何使Windows auth工作与匿名设置相同,所以我可以从网站2访问数据库..?
干杯!
史蒂夫
编辑:每个人都拥有数据库所在文件夹的完全权限。
答案 0 :(得分:0)
在我看来,您需要启用模拟,以便传入的用户可以访问数据库。否则,将使用应用程序池的用户,这通常在服务器本身上没有权限(应用程序池标识)
在服务器上的IIS上使用“集成管道”时,如果您的应用程序不依赖于在“BeginRequest”和“AuthenticateRequest”阶段模拟请求用户(在集成模式下无法模拟的唯一阶段) ,但仍然需要在应用程序的其他区域进行模拟,通过将以下内容添加到应用程序的web.config中来忽略此错误(500 - 内部服务器错误)
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
请参阅: http://allen-conway-dotnet.blogspot.com/2010/11/how-to-use-impersonation-in-aspnet.html