我刚刚迁移了一个开发工作站
由于移动,我访问SQL Server 2000数据库的页面之一是从我的ASP.NET 2.0网页收到以下错误:“login失败的用户'NT AUTHORITY \ ANONYMOUS LOGON'”。
我有:
使用SqlConnection的连接string是“服务器= {SERVER_NAME};数据库= {DB_NAME};集成安全性= SSPI; Trusted_Connection = True;”
为什么要用NT AUTHORITY \ ANONYMOUS LOGINlogin? 我必须假定它是一些特定于IIS7的设置或web.config条目,因为它在迁移之前工作正常。
注:SQL Server只是Windows身份validation – 不能使用混合模式或SQL。
在我看来,像约束委派没有启用: configuration服务器委派 。
我知道这是一个迟到的答复,但我也偶然遇到了同样的问题,并解决了这个问题。 想和大家分享一下。
我可以理解为什么你可能不想引入SQL身份validation,因为客户可能不赞成这一点。
要使Windows身份validation正常工作,您可以执行以下步骤:
1)在web.config中指定对Windows的身份validation
2)在web.config中将身份模拟为true
3)为应用程序创build一个新的域虚拟用户,比如说[email protected],用一些密码
4)在模拟部分,指定此用户名和密码
5)在IIS中,删除匿名访问并检查集成的Windows身份validation
6)使用aspnet_regiis -ga“mydomain \ username”提供对新的用户访问IIS元数据库的访问权限
7)为这个用户提供对虚拟目录的物理目录的访问权限。 您将需要在此添加此用户。
8)请注意,如果您的应用程序正在写入某个日志文件,则还需要提供“写入”权限
9)请注意,如果您的应用程序正在访问一些数据库,并执行一些存储的特效,则需要将该用户添加到具有dbowner权限的sql serverlogin。
此外,您可能不想陷入安全陷阱提供访问NT权威/匿名login,所以在这种情况下创build自己的应用程序用户将有所帮助。
我希望它可以帮助,如果它要求你作为“答案”
我遇到了同样的问题,使用SQL Server 2008数据库。 虽然可能有不同的方法来解决这个问题,但由于亚当的联系,我能够find这个部分,这解决了我的情况:
5)默认情况下,Windowsauthentication在内核中执行。 这可能会导致发送初始请求凭据的HTTP客户端失败。
IIS 7.0内核模式身份validation在IIS 7.0中默认启用。 这提高了Windows身份validation的性能,并简化了Kerberos身份validation协议的部署。 但是,由于内核模式身份validation的devise限制,可能会导致某些客户端在初始请求时发送Windows凭据失败。 普通的浏览器客户端不会受到影响,因为他们总是匿名发送初始请求。
注意:此重大更改适用于经典和集成模式。
在IISpipe理器中禁用“内核模式”解决了问题,正确地发送凭据。
您是否尝试编辑应用程序池并将pipe理的pipe道模式更改为Classic而不是集成?
这可能与打破ASP.Net 2.0应用程序的IIS7更改有关。
也许添加本地networking服务帐户到SQL上的数据库。
希望能帮助到你。