代码之家  ›  专栏  ›  技术社区  ›  gerrod

IIS7中的SQL Server和Windows身份验证

  •  8
  • gerrod  · 技术社区  · 15 年前

    我正在尝试让一个ASP.NET网站在Vista(iis7)上运行,使用SQL Server和Windows身份验证。无论我做什么,当我连接到数据库时,我都会得到异常:

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

    我应用的设置似乎无关紧要,我无法让iis7通过我的Windows登录凭据。

    额外细节:

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

    救命!

    4 回复  |  直到 9 年前
        1
  •  7
  •   Remus Rusanu    15 年前

    如果正确配置,模拟开/关会产生所有差异。您需要的是caled“受限委派”,并且需要为其配置IIS和ASP:

        2
  •  1
  •   Andomar    15 年前

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

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

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

        3
  •  0
  •   treaschf    15 年前

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

        4
  •  0
  •   Raj More    15 年前

    连接字符串是否包含 Integrated Security=SSPI 是吗?

    您是否也将ASP.NET上下文切换为域用户?

    这里有一篇关于这个主题的msdn文章

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