我开发了一个消耗WCF服务的C#控制台应用程序。一切都在本地机器上正常工作。当我创建设置文件并分发exe和exe.config文件时,应用程序在同一网络上的其他计算机上出错,并出现以下错误:
通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信,因为它处于Faulted状态。
WCF服务端点网址 - http://inblrlwssc251.wdf.corp:7980/AfariaService/Server也可以从其他计算机访问。不确定会出现什么问题。
服务的配置如下所示,我使用WSHTTP绑定:
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true"
logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
</diagnostics>
<bindings>
<netNamedPipeBinding>
<binding name="NetNamedPipeBinding_IServerService" />
</netNamedPipeBinding>
<netTcpBinding>
<binding name="NetTcpBinding_IServerService">
<security mode="Message" />
</binding>
</netTcpBinding>
<wsHttpBinding>
<binding name="WSHttpBinding_IServerService" />
</wsHttpBinding>
</bindings>
<!--
Modify the "adress" in each of the endpoint tags based on where the Afaria API service is hosted
-->
<client>
<endpoint address="http://inblrlwssc251:7980/AfariaService/Server"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IServerService"
contract="AfariaServerService.IServerService" name="WSHttpBinding_IServerService">
</endpoint>
<endpoint address="net.tcp://inblrlwssc251:7982/AfariaService/Server"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IServerService"
contract="AfariaServerService.IServerService" name="NetTcpBinding_IServerService">
</endpoint>
<endpoint address="net.pipe://localhost/AfariaService/Server"
binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IServerService"
contract="AfariaServerService.IServerService" name="NetNamedPipeBinding_IServerService">
</endpoint>
</client>
</system.serviceModel>
非常感谢任何帮助或正确方向的指针。
答案 0 :(得分:0)
我知道这已经过时了,你说它已经解决了,但为了后人的缘故,这通常不是传递错误凭据的结果。通常,这是服务器响应的结果,响应的是您已配置为在缓冲区中接受的更多数据,超过maxitemsinobject图,或者服务器响应时间过长,这会导致异常,这会被处理。 ..而这个例外是下次电话会议的结果(正如fejesjoco和蒂姆指出的那样)。
发生这种情况时,最好重新初始化客户端/ serviceclient对象(对于此api,也调用initContext),然后再次尝试调用。