在我们部署好WCF服务以后,调用WCF服务会出现”调用方未由服务器进行身份验证”的错误。这个错误是怎么造成的呢?
通常我们在创建WCF后,用本机调试,一切正常,没有任何问题。其实用本机测试的时候,服务端和客户端是默认建立了一个身份认证。而我们将WCF部署在其他服务端上后,
这样的身份验证便不再存在。因此,系统便会报调用方未由服务器进行身份验证的错误。这个问题怎么解决呢?
解决方法:
1、在WCF的服务端配置文件和客户端配置文件中声明一段Bindings
<bindings> <wsHttpBinding> <binding name="NoneSecurity" maxBufferPoolSize="12000000" maxReceivedMessageSize="12000000" useDefaultWebProxy="false"> <readerQuotas maxStringContentLength="12000000" maxArrayLength="12000000"/> <security mode="None"/> </binding> </wsHttpBinding> </bindings>
ps:这段xml要放在 <system.serviceModel>下
2、在WCF服务端配置文件的endpoint节点中加入绑定属性 bindingConfiguration="NoneSecurity" 如:
PS:bindingConfiguration的值为binding的name,这个name可以取任意名字
3、在WCF的客户端配置文件中也要加入绑定属性 bindingConfiguration="NoneSecurity" 如:
设置完成后,再次运行,错误消失。服务正常运行。
注意:此方法仅适用于没有什么安全性需求的服务设置。如果对安全性有要求,谨慎使用!!!