Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Web.config身份验证错误_Asp.net_Sql Server 2005_Visual Studio 2008_Iis - Fatal编程技术网

Asp.net Web.config身份验证错误

Asp.net Web.config身份验证错误,asp.net,sql-server-2005,visual-studio-2008,iis,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本地主机运行我的页面时,一切正常。但是,通过IIS查看时,会显示一条错误消息,如“用户登录失败,'KMT/ASP.NE

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

add name="library" connectionString="Data source=KMT; Initial Catalog=Library;Integrated Security=SSPI"
这里,KMT是我的服务器名,Library是我的数据库

当我通过VS2008本地主机运行我的页面时,一切正常。但是,通过IIS查看时,会显示一条错误消息,如“用户登录失败,'KMT/ASP.NET'”。我的sqlserver身份验证模式是windows,在web.config中可以。解决方案是什么?

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


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

VS2008使用您的凭据向数据库授权,IIS使用的是不同的帐户。
确保IIS帐户具有足够的权限。

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

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

解决方案:

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

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


您计划使用ASP.NET系统帐户还是用户windows帐户


如果你需要后者。如果SQL和IIS在同一台机器上,那么这是可行的,否则这是一个双跳过程,需要非常多的工作来设置委派。

我的一个朋友也帮助我解决了这个问题 我执行了SQL以将ASPNET添加为登录名 my DB和setup DA权限

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

这里MACHINE是机器名,database是我的数据库名。 但通过这一点,ASPNET用户拥有了
控制该数据库。

如果服务器是windows 2003,则可以向网络服务授予访问SQL server的权限