【问题标题】:Connecting to SQL Database from IIS从 IIS 连接到 SQL 数据库
【发布时间】:2012-10-31 00:43:47
【问题描述】:

这是我的连接字符串,Web 服务(托管在 IIS 中,在 ApplicationPoolIdentity 下运行)用于连接数据库

<add name="AdventureWorksEntities"connectionString="metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl;
provider=System.Data.SqlClient;provider connection string='Data Source=TestMachine;Initial Catalog=AdventureWorks;
Integrated Security=True;Connection Timeout=60;multipleactiveresultsets=true'" providerName="System.Data.EntityClient" />

当我尝试访问该站点时出现异常:用户 MyDomain\TestMachine$ 登录失败。

为什么 IIS 尝试使用 TestMachine 连接而不是我的用户帐户(例如 MyDomain\TestUser)? 我相信的原因可能是因为它托管在使用机器凭据的 ApplicationPoolIdentity 下。

如何指定它以使用发出请求的用户的上下文,而不必在自定义身份下运行应用程序(即我希望它继续在 ApplicationPoolIdentity 下运行)?

如果我在 web.config 文件中设置&lt;identity impersonate = true/&gt;',那么我可以从 IIS 服务器计算机本地访问该站点并且可以访问数据库,但是远程访问该站点会失败。我的 Web 服务正在使用 Windows 身份验证。对此有什么想法吗?

【问题讨论】:

    标签: sql sql-server iis web-applications iis-7


    【解决方案1】:

    您需要在 IIS 中启用 Windows 身份验证和 ASP.NET 模拟

    然后在你的 web.config 中

      <system.web>
        <authentication mode="Windows" />
        <identity impersonate="true" />
    </system.web>
    

    【讨论】:

    • 除了 impersonate="false" 我也有同样的东西。如果我设置 impersonate="true" 那么我无法从远程机器访问该网站。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2012-05-05
    • 1970-01-01
    相关资源
    最近更新 更多