【发布时间】:2011-03-27 10:17:10
【问题描述】:
我有一个 WCF 服务,我想用它来访问一个 SQL 数据库(目前通过 Linq2SQL),但实时 IIS 环境中的受信任安全性似乎没有使用正确的凭据 - 我试图遵循这里的相关帖子,但似乎不太明白。如果有人能发现我的错误,我将不胜感激......
在 Endpoint 配置中,我已将其设置为使用 BasicHttpBinding,配置如下
<basicHttpBinding>
<binding name="authHttpBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
我已将 system.web 设置为:
<authentication mode="Windows" />
<identity impersonate="true" />
在 IIS 服务器上,我添加了一个新的 AppPool,将 Identity 设置为 ApplicationPoolIdentity,并将 ManagedPipeLine 设置为 Integrated。在实际的 Web 应用程序中,设置为我的新 AppPool,我已将 Windows 身份验证设置为“启用”,并尝试启用和禁用 ASP.Net 模拟
当我尝试调用 WCF 服务时,它会运行,但是当它通过 Linq2SQL(使用 Trusted Security 对远程服务器上的数据库)实际调用存储过程时,我收到以下错误: 用户 'domain\ machinename$' 登录失败 - 机器名称末尾带有美元符号
这在我看来很像我未能委派正确的身份(我可以通过 Management Studio 访问实际的数据库。
【问题讨论】:
-
同样的问题。如果你记得你是如何解决的,请告诉我。
标签: asp.net wcf iis impersonation windows-identity