当我在我的开发机器上运行WCF服务时,只要客户端连接到域,它就会起作用。
当机器断开连接时,我得到以下异常:
System.ServiceModel.Security.SecurityNegotiationException:对SSPI的调用失败,请参阅内部异常。 System.Security.Authentication.AuthenticationException:对SSPI的调用失败,请参阅内部异常。 ---> System.ComponentModel.Win32Exception:系统检测到可能危及安全性的尝试。 请确保您可以联系经过身份验证的服务器
该服务在内部使用安全性(<transport clientCredentialType="Windows" protectionLevel="None"/>
),因此我无法轻易将其关闭。
有没有办法解决这个问题所以我可以在没有连接时测试服务?
答案 0 :(得分:3)
未连接到域时可能无效。
多个绑定的默认WCF安全性是“Windows”,例如您当前的用户凭据正在传递给WCF服务,然后该服务尝试针对Windows域验证这些用户凭据。
如果您没有连接,则无法进行验证,因此WCF服务将拒绝该呼叫。按设计工作,我会说:-)
也许您可以为您的服务公开第二个端点(“本地开发测试”),而不需要Windows身份验证?离开域时,只需连接到该非安全端点,以便至少可以测试服务及其内部工作。
答案 1 :(得分:3)
解决方法涉及从客户端应用程序中删除UserPrincipal(在app.config中)
<identity>
<userPrincipalName value="SOME-DOMAIN\SomeUser" />
</identity>
答案 2 :(得分:0)