症状
在创建从 asp.net 到 sql server 的受信任连接时,可能会出现以下错误信息:
login failed for user 'machinename/aspnet
for computers that run internet information services (iis) 6.0, you may receive the following error message:
login failed for user 'machinename/networkservice
注意:特别是在使用集成安全性(在连接字符串中包括 integrated security=sspi 属性)时,会出现上述错误信息中的某一个。
原因
当您使用 asp.net 时,对于 aspnet_wp.exe (或者对于 在 iis 6.0 上运行的应用程序而言,为 w3wp.exe)和发往 sql server 的请求,默认的安全上下文都是 aspnet_wp 帐户(或者对于在 iis 6.0 上运行的应用程序而言,为 networkservice 帐户)。默认情况下,aspnet_wp 帐户(或者对于在 iis 6.0 上运行的应用程序而言,为 networkservice 帐户)在 sql server 中没有任何权限,因此它不能访问数据库。
解决方案
要解决此问题,请使用下列方法之一。
• 以编程方式将 asp.net 辅助进程的安全上下文更改为具有正确的 sql server 权限的用户。
- 或者 -
• 更改 asp.net 的默认配置,以便 asp.net 辅助进程在满足以下条件的用户的上下文中启动和运行:该用户在 sql server 中具有正确的权限。
- 或者 -
• 授予 sql server 上的正确权限,以便 aspnet_wp 帐户(或者对于在 iis 6.0 上运行的应用程序而言,为 networkservice 帐户)具有访问所需资源的适当权限。
状态
出现这种现象的原因是缘于设计如此。
再现此问题的步骤
1. 在任何同时运行 asp.net 和 sql server 的计算机上,创建一个新的 microsoft visual basic .net web 应用程序。
2. 将以下代码添加到随该项目一起创建的 webform1.aspx 页的 page_onload 事件中:dim con as new system.data.sqlclient.sqlconnection("data source=localhost;integrated security=sspi;database=northwind")
con.open()
con.close()
3. 生成该项目,然后在浏览器中打开 webform1.aspx 页。您将看到本文“症状”部分描述的错误信息。
新闻热点
疑难解答
图片精选