ASP.NET与SQLServer数据连接时出现登录失败错误信息

王朝mssql·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

症状

在创建从 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 页。您将看到本文“症状”部分描述的错误信息。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航