Wcf 使用ServiceHostFactory时获取“安全支持提供程序接口(SSPI)协商失败”

Wcf 使用ServiceHostFactory时获取“安全支持提供程序接口(SSPI)协商失败”,wcf,exception-handling,wcf-security,wshttpbinding,servicehost,Wcf,Exception Handling,Wcf Security,Wshttpbinding,Servicehost,我最近开始使用自定义ServiceHostFactory,因为我想在WCF中使用依赖项注入。我的客户端和服务都是从VS2010在本地计算机上运行的,并且该服务使用ASP.NET开发服务器。为什么我现在有这个问题?我过去成功地使用了wsHttpSecurity,在本地机器上同时拥有客户端和服务。我真的认为这里唯一的区别是使用ServiceHostFactory。我尝试过使用userPrincipalName属性,但我甚至不确定应该为该值输入什么。应该是MachineName\username吗?这

我最近开始使用自定义ServiceHostFactory,因为我想在WCF中使用依赖项注入。我的客户端和服务都是从VS2010在本地计算机上运行的,并且该服务使用ASP.NET开发服务器。为什么我现在有这个问题?我过去成功地使用了wsHttpSecurity,在本地机器上同时拥有客户端和服务。我真的认为这里唯一的区别是使用ServiceHostFactory。我尝试过使用userPrincipalName属性,但我甚至不确定应该为该值输入什么。应该是MachineName\username吗?这个属性会有所不同吗?我非常感谢您提供的任何帮助。

UserNamePrincipal描述了服务凭据。若您将UPN设置为某个帐户,则声明该服务将托管在该帐户下运行的进程中。此信息在WSDL中传递给客户机。当客户端打开服务的通道时,它首先验证服务是否在某种安全握手下运行。If not由于服务未经过身份验证而引发异常。如果在development server上运行服务,则必须将UPN设置为当前帐户。

UserNamePrincipal描述了服务凭据。若您将UPN设置为某个帐户,则声明该服务将托管在该帐户下运行的进程中。此信息在WSDL中传递给客户机。当客户端打开服务的通道时,它首先验证服务是否在某种安全握手下运行。If not由于服务未经过身份验证而引发异常。如果您在development server上运行该服务,则必须将UPN设置为您的当前帐户。

它起作用了。谢谢userPrincipalName和servicePrincipalName之间的区别是什么。人们在internet上使用WCF时通常必须设置servicePrincipalName吗?它们都不用于internet上的通信。它仅在相同的Windows域或受信任域中工作。用户主体只是用户名。对于服务主体检查的描述:Kerberos身份验证需要服务主体。尽管上述解决方案有效,但它仅在我连接到公司网络时有效。当我离线时,我会得到相同的安全异常。是的,如果你使用域名作为用户主体,并且你没有连接到域,就会发生这种情况。它起作用了。谢谢userPrincipalName和servicePrincipalName之间的区别是什么。人们在internet上使用WCF时通常必须设置servicePrincipalName吗?它们都不用于internet上的通信。它仅在相同的Windows域或受信任域中工作。用户主体只是用户名。对于服务主体检查的描述:Kerberos身份验证需要服务主体。尽管上述解决方案有效,但它仅在我连接到公司网络时有效。当我脱机时,我会遇到同样的安全异常。是的,如果您使用域名作为用户主体,并且您未连接到域,则会发生这种情况。