IIS7中的SQL Server和Windows身份验证

时间:2009-12-04 14:21:10

标签: asp.net sql-server iis-7 windows-authentication

我正在尝试使用SQL Server和Windows身份验证在Vista(IIS7)上运行ASP.NET网站。无论我做什么,当我连接到数据库时,我得到例外:

    SqlException was unhandled
    Login failed for user 'MyDomain\MachineName$'.

我应用的设置似乎并不重要,我无法让IIS7通过我的Windows登录凭据。

额外细节:

        
  • SQL Server和我的本地计算机都在ActiveDirectory
  • 上     
  • Vista Enterprise,IIS7
  •     
  • SQL Server 2005
  •     
  • 已禁用匿名身份验证,已启用Windows身份验证
  •     
  • 模拟开启/关​​闭没有区别
  •     
  • 所有身份(NetworkService,LocalSystem等)给出相同的结果
  •     
  • 经典和集成管道提供相同的结果

帮助!

4 个答案:

答案 0 :(得分:7)

正确配置时,模拟开启/关​​闭会产生重大影响。您想要的是“约束委派”,您需要为它配置IIS和ASP:

答案 1 :(得分:1)

默认情况下,IIS服务器不允许impersonate您使用SQL Server。关于如何配置它有一个MSDN article。配置过程复杂且容易出错。

如果您的生产ISS和SQL Server在不同的服务器上运行,则您需要域管理员来配置两台服务器之间的模拟信任。这通常是一个大型组织的禁忌。

除了不由普通管理员部署之外,模拟还会阻止用户在SQL连接池中共享其连接。即使是小型(超过5个用户)的网站,这也会导致非常明显的性能损失。

答案 2 :(得分:0)

您是否尝试为应用程序创建新的用户帐户,在Sql Server上为其授予适当的权限,然后将应用程序池设置为在此新帐户下运行? 这就是我通常做的,而且它有效。我没有在NetworkService,LocalSystem或其他内置帐户下运行我的应用程序。

答案 3 :(得分:0)

您的连接字符串是否包含Integrated Security=SSPI

您是否已将asp.net上下文切换为域用户?

以下是关于此主题的MSDN文章

http://msdn.microsoft.com/en-us/library/2xzyzb0f.aspx