主机上配置的身份验证方案('Anonymous')不允许在绑定'BasicHttpBinding'('Negotiate')上配置的身份验证方案。请确保将SecurityMode设置为Transport或TransportCredentialOnly。此外,可以通过IIS管理工具,通过ServiceHost.Authentication.AuthenticationSchemes属性,在元素的应用程序配置文件中更改此应用程序的身份验证方案,通过更新绑定上的ClientCredentialType属性,或通过调整HttpTransportBindingElement上的AuthenticationScheme属性。
答案 0 :(得分:31)
如果本地IIS Web服务器中未安装身份验证模式,则可能会显示此错误。转到控制面板 - >程序 - >打开或关闭Windows功能
检查互联网信息服务 - > Wold wide web Services - >安全 - > 并启用基本,Windows,摘要式身份验证模式。打开IIS并导航到您的应用程序,然后转到身份验证部分并启用所需的身份验证模式。 对我来说,安装后或webserver重启后没有立即显示身份验证模式。重新启动计算机会在Web应用程序中显示它们。
答案 1 :(得分:11)
答案 2 :(得分:8)
答案 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)
答案 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>