Web.config身份验证错误

时间:2009-08-28 20:38:18

标签: asp.net sql-server-2005 visual-studio-2008 iis

我正在使用SQLServer2005和VS2008。我在web.config中的连接字符串是:

add name="library" connectionString="Data source=KMT; Initial Catalog=Library;Integrated Security=SSPI"

此处,KMT是我的服务器名称,Library是我的数据库。

当我通过VS2008 localhost运行我的页面时,没关系。但是,通过IIS查看时,它会显示错误消息,例如“登录用户失败,'KMT / ASP.NET'”。我的sqlserver身份验证模式是windows,它在web.config中没问题。什么是解决方案?

6 个答案:

答案 0 :(得分:2)

使用“集成安全性”意味着使用运行该进程的用户的身份登录数据库。运行本地VS Web服务器时,它将作为您的登录名运行。但在IIS中,Web服务器工作进程作为预定义的用户帐户运行。 您的工作进程标识必须具有SQL Server和数据库的权限。

检查IIS中应用程序池的属性。例如,如果您以网络服务身份运行,请进入SQL并创建新用户,输入网络服务作为Windows用户名,并将该用户权限授予您的数据库。

答案 1 :(得分:2)

我的一位朋友帮我解决了这个问题 我执行SQL以添加ASPNET作为登录 我的数据库和设置DA权限

exec sp_grantlogin N'MACHINE \ ASPNET' exec sp_defaultdb N'MACHINE \ ASPNET',N'Database' 使用数据库 exec sp_grantdbaccess N'MACHINE \ ASPNET',N'ASPNET' exec sp_addrolemember N'db_owner',N'ASPNET'

这里MACHINE是机器名,数据库是我的数据库名。 但通过此ASPNET用户总数 控制该数据库。

答案 2 :(得分:0)

VS2008使用您的凭据授权给db,IIS正在使用不同的帐户。 确保IIS帐户具有足够的权限。

答案 3 :(得分:0)

如果您使用Integrated Security = SSPI,则使用当前用户的凭据(在VS中将是您的凭据)连接到SQL Server。

从IIS应用程序中,与IIS服务关联的用户用于登录。

解决方案:

  • 为IIS服务分配一个允许连接到SQL的特殊用户

  • 使用SQL Server身份验证访问数据库,并在连接字符串中存储用户名/密码

答案 4 :(得分:0)

您打算使用ASP.NET系统帐户还是用户Windows帐户?

如果是后者,则需要impersonation。如果SQL和IIS在同一台机器上,那么这是有效的,否则它是一个双跃点,需要一些非常重要的工作来设置委派。

答案 5 :(得分:0)

如果服务器是Windows 2003,您可以向网络服务授予访问SQL Server的权限