4

我在使用 WCF 测试客户端时遇到问题。我无法连接到我的 WebService,因为它一直遇到此错误:

错误:无法从 http://xxx.xxxxxxxx.xxx/DPITerminal.svc获取元数据如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅位于 http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://xxx.xxxxxxxx.xxx/DPITerminal.svc
的 MSDN 文档 元数据包含无法解析的引用:“http://xxx.xxxxxxxx.xxx/DPITerminal.svc”。内容类型应用程序/soap+xml;服务http://xxx.xxxxxxxx.xxx/DPITerminal.svc不支持 charset=utf-8 . 客户端和服务绑定可能不匹配。远程服务器返回错误:(415)无法处理消息,因为内容类型'application/soap+xml; charset=utf-8' 不是预期的类型 'text/xml; charset=utf-8'..HTTP GET 错误 URI: http://xxx.xxxxxxxx.xxx/DPITerminal.svc 下载“http://xxx.xxxxxxxx.xxx/DPITerminal.svc”时出错

这是我的 Web.Config: Link

如您所见,我已经有了

<serviceMetadata httpGetEnabled="true" /> 

<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="mex" contract="IMetadataExchange" />

正如其他 StackOverflow 问题中所建议的那样。还是不行。

我还注意到,当我评论以下端点时:

<endpoint address="x" behaviorConfiguration="poxBehavior" binding="webHttpBinding" bindingConfiguration="web" contract="xxx.xxxxxxxx.xxxxxx.WebService.IDPITerminal" />

一切都按预期工作。所以我猜我的 XML Endpoint 有问题?这很奇怪,因为 XML 端点共享 JSON 端点的绑定配置,而 JSON 没有任何问题。

另外,让我澄清一下,我只是在使用 WCF 测试客户端时遇到问题。JSON 和 XML 端点都工作正常。

编辑:

我尝试评论 XML 端点,发布,然后通过 WCF 测试客户端连接。然后我取消注释 XML Endpoint,重新发布。WCF 测试客户端仍然有效——我的意思是我可以发送和接收数据。当我刷新服务时,再次弹出无法获取元数据错误。

4

1 回答 1

4

似乎 WCF 不允许对 2 个端点使用相同的配置。

有解决此问题的解决方法:

  1. bindingConfiguration将端点的属性address="x"从更改webweb2
  2. 添加新的 web2webHttpBinding配置(复制 web 配置):

新绑定配置的代码:

<webHttpBinding>
    <binding name="web" ... />
    <binding name="web2" closeTimeout="00:10:00" openTimeout="00:10:00"
         sendTimeout="00:10:00" allowCookies="true" maxBufferSize="2147483647"
         maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
         <readerQuotas maxDepth="64" maxStringContentLength="2147483647"
            maxArrayLength="8192" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
    </binding>
</webHttpBinding>

更新:

WCF 测试客户端无法获取元数据,webHttpBinding因为此类元数据不存在。RESTfull 服务不支持 WSDL 或用于 或 的类似basicHttpBinding协议wsHttpBinding。当 WCF 测试客户端尝试在两种情况下获取元数据时(当 WCF 测试客户端失败和不失败时),服务返回错误,但由于某种原因,在建议的解决方法的情况下,WCF 测试客户端设法吞下错误。很难说为什么没有 WCF 测试客户端源代码。

跟踪查看器中的错误:

在此处输入图像描述

于 2012-07-28T20:44:28.363 回答