我让带有Integrated Windows authentication的asp网页应用程序检查了IIS并清除了匿名访问框。在高级windows身份验证中,我检查了Enable kernel-mode authentication。
应用程序池运行管理域用户和集成模式。
当用户点击这个应用程序中的某个网页时,我可以从日志中看到域名用户名是发送到服务器的,而且我在Request.ServerVariables("AUTH_USER")中也有值。
一切都很好,应该是这样。我可以看到哪个用户访问应用程序。
现在,网页还访问SQL数据库。我有连接字符串,比如:
"Provider=SQLOLEDB.1;Integrated Security=SSPI;..."但是,当我访问数据库时,我会得到以下错误:
用于Server错误“80040e4d”的Microsoft提供程序 登录失败的用户'NT权限\匿名登录‘。
我怎么能说,与sql服务器的连接是使用app池帐户而不是匿名的呢?
发布于 2015-07-23 14:27:30
我认为,如果您检查网站的配置文件中的标识标记,您会发现它的设置如下:
<identity impersonate="true"/>在您的配置中,应该是:
<identity impersonate="false"/>通过这种方式,您告诉iis不要冒充通过web远程登录的人,而是使用应用程序池中指定的帐户。
这里是一个简单描述主题的页面。
发布于 2015-07-24 12:51:16
经过两天的测试,我终于成功了。有两种形式的模拟:"identity impersonate=false“是用于在应用程序池中定义的用户或用户上下文中运行的应用程序。但是,还可以模拟应用程序池使用用户访问磁盘上的资源。它在基本设置和连接为。默认是通过身份验证。我不知道它与访问外部数据库有什么关系,但是在将其设置为同一个应用程序池的用户之后,现在一切都正常了。我希望它能对某人有所帮助。
https://stackoverflow.com/questions/31586455
复制相似问题