0

这是我的连接字符串,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 下运行)?

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

4

1 回答 1

1

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

然后在你的 web.config

  <system.web>
    <authentication mode="Windows" />
    <identity impersonate="true" />
</system.web>
于 2012-10-31T01:07:55.147 回答