主机上配置的身份验证方案('Anonymous')不允许在绑定'BasicHttpBinding'('Negotiate')上配置的身份验证方案。

时间:2013-11-24 16:23:02

标签: wcf wcf-security basichttpbinding transport-security

主机上配置的身份验证方案('Anonymous')不允许在绑定'BasicHttpBinding'('Negotiate')上配置的身份验证方案。请确保将SecurityMode设置为Transport或TransportCredentialOnly。此外,可以通过IIS管理工具,通过ServiceHost.Authentication.AuthenticationSchemes属性,在元素的应用程序配置文件中更改此应用程序的身份验证方案,通过更新绑定上的ClientCredentialType属性,或通过调整HttpTransportBindingElement上的AuthenticationScheme属性。

9 个答案:

答案 0 :(得分:31)

如果本地IIS Web服务器中未安装身份验证模式,则可能会显示此错误。转到控制面板 - >程序 - >打开或关闭Windows功能

检查互联网信息服务 - > Wold wide web Services - >安全 - > 并启用基本,Windows,摘要式身份验证模式。打开IIS并导航到您的应用程序,然后转到身份验证部分并启用所需的身份验证模式。 对我来说,安装后或webserver重启后没有立即显示身份验证模式。重新启动计算机会在Web应用程序中显示它们。

答案 1 :(得分:11)

如有必要 - 安装[{3}}功能,打开IIS管理器,打开服务器功能:

described above

打开“身份验证”功能:

enter image description here

启用/禁用所需的:

enter image description here

答案 2 :(得分:8)

如果在Visual Studio中进行调试时遇到此问题,请选择项目并更改属性中的身份验证。

VS win auth

答案 3 :(得分:1)

当我遇到这种情况时,我发现当使用“发现”按钮添加服务引用时,Visual Studio正在使用“默认网站”来托管我的服务。所以要修复,我必须启用我的服务在IIS中的“默认网站”上使用的身份验证。由于我使用Windows身份验证,为IIS中的“默认网站”启用它,这似乎解决了我的问题。当然,如果您的服务使用其他类型的身份验证,则必须启用正确的身份验证。

要配置身份验证,请打开IIS。在“站点”下,选择“默认网站”,然后选择“身份验证”。

答案 4 :(得分:1)

这对我来说是发生的,因为该站点已为Windows身份验证配置了WCF ...

<security mode="Transport">
    <transport clientCredentialType="Windows" />
</security>

但是,IIS已禁用Windows身份验证并启用了匿名身份验证。解决方法是在IIS中启用Windows身份验证。

答案 5 :(得分:0)

我解决了将协商添加到IIS身份验证提供程序的问题: enter image description here

答案 6 :(得分:0)

就我而言,问题在于重构后服务的配置错误。 如果service中的 name属性标记未指向现有类,则可能会出现此异常,这将完全误导您。

所以请记住名称:

<service behaviorConfiguration="FooBehavior" name="Fully.Qualified.Name.Of.Class.Implementing.Service.Contract.Here"> 

答案 7 :(得分:0)

仅重新启动IIS即可解决我的问题

答案 8 :(得分:0)

如果您尝试在IIS中为“基本身份验证”配置服务(即,提示输入用户名/密码),则安全传输设置应设置如下:

对于basicHttpBinding

<security mode="Transport">
  <transport clientCredentialType="Basic" />
  <message clientCredentialType="UserName" />
</security>

对于webHttpBinding

<security mode="Transport">
  <transport clientCredentialType="Basic" />
</security>