我有一个WCF服务,我作为Windows服务托管。我需要在服务端点上支持Windows和NTLM身份验证。
我遇到了一个MSDN页面,它解释了与.NET 4.5完全相同的内容,这里是链接:
http://msdn.microsoft.com/en-us/library/hh556235(v=vs.110).aspx
通过这种方式,我在代码中配置了我的服务端点,如上面链接的自托管服务部分所述。但是,当我测试时,这并不起作用。我捕获了流量并观察到该服务没有发送HTTP 401质询,而是直接因HTTP 400 Bad Request错误而失败。我认为应该是发送给客户端的HTTP 401质询。
我在这里错过了什么吗?
答案 0 :(得分:1)
有可能,我可以在经过4天的努力后使其工作,错误HTTP错误请求并不表示问题。但是,当我使用HttpGetEnabled添加服务元数据行为时,它起作用了。
另外,请确保在定义ServiceAuthenticationBehavior时,将ClientCredentialType标记为InheritedFromHost。这将确保应用ServiceAuthenticationBahavior指示的身份验证方案。
希望,这会拯救别人的4天! :)
答案 1 :(得分:0)
您可以在同一Windows服务中运行多个身份验证方案,但不能在同一个端点运行 - 这是不可能的。
例如,我可以创建和IIS或自托管一个名为NeedHelp的Web服务,它使用三种身份验证,这是我的端点:
http:/ / NeedHelp:8001 / NoAuth
http:/ / NeedHelp:8002 / WindowsAuth
http:/ / NeedHelp:8003 / CertAuth
所有这些都可以在同一个Web服务下运行,所有这些服务都由IIS托管或自托管为Windows服务。但它们都需要单独的端口地址。