我只是尝试使用此连接字符串
将WCF服务移动到Windows身份验证 <add name="MembershipConnection" connectionString="Data Source=DBADDRESS ;Initial Catalog=aspNetMembership;Persist Security Info=True;Integrated Security=SSPI;"/>
WCF服务托管在IIS(2003)中,我在“目录安全”下设置的用户是我们为此应用程序设置的用户,该用户在SQL中具有权限设置。此应用程序的应用程序池设置在“网络服务”用户下运行,但在尝试使用该服务时出现此异常。
System.Data.SqlClient.SqlException:用户'Domain \ MAchineName $'
登录失败
我和我们的系统管理员交谈,他说用户名末尾的$表示机器本身,如果尝试不对用户进行身份验证。
有关机器尝试进行身份验证的原因而不是IIS中的用户设置的任何想法?
答案 0 :(得分:4)
实际上,它正如所宣传的那样工作:“网络服务”用户将作为任何远程连接的机器进行身份验证。来自msdn docs here:
在上下文中运行的服务 NetworkService帐户显示 计算机的远程凭据 服务器
如果您需要特定帐户,则需要创建该帐户并设置应用程序池以在该帐户下运行。
如果您想以用户身份进行身份验证,则需要设置委派。
答案 1 :(得分:1)
您需要将服务配置为模拟调用者(简单部分,例如使用[OperationBehavior(Impersonation = ImpersonationOption.Required)]
),然后您需要设置IIS以进行限制委派。参见