WCF 因为 endpoint 配置错误无法调用

调试 WCF 服务时,一直报异常:

无法识别该 URI 前缀。
元数据包含无法解析的引用:“net.tcp://localhost:8888/LogService”。
套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的。本地套接字超时是“00:05:00”。
远程主机强迫关闭了一个现有的连接。
如果该服务已在当前解决方案中定义,请尝试生成该解决方案,然后再次添加服务引用。

检查了服务器端的 endpoint 配置,发现一下的这句:

<endpoint address="net.tcp://localhost:8888/LogService/mex" binding="mexTcpBinding" contract="WcfLib.ILogService"></endpoint>

其中的 contract 值为 WcfLib.ILogService,但是这是 mex 的配置,值应该为 IMetadataExchange

遂修改为:

<endpoint address="net.tcp://localhost:8888/LogService/mex" binding="mexTcpBinding" contract="IMetadataExchange"></endpoint>

问题搞定。


在网上找了一遍,WCF 关于“无法识别该 URI 前缀”此类的异常,多数都是因为 endpoint 的配置(服务器端或客户端)不正确引起的。