这是我的连接字符串,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文件中设置<identity impersonate = true/>'
,那么我可以从IIS服务器计算机本地访问该站点并访问数据库,但远程访问该站点失败。我的Web服务正在使用Windows身份验证。有什么想法吗?
答案 0 :(得分:1)
您需要在IIS中启用Windows身份验证和ASP.NET模拟
然后在你的web.config
中 <system.web>
<authentication mode="Windows" />
<identity impersonate="true" />
</system.web>