WCF - 无法获取元数据,但在删除XML端点时有效吗?

时间:2012-07-24 08:54:29

标签: wcf web-config wcftestclient

我遇到了WCF测试客户端的问题。我无法连接到我的WebService,因为它一直遇到这个错误:

  

错误:无法从中获取元数据   http://xxx.xxxxxxxx.xxx/DPITerminal.svc如果这是Windows   (R)请访问您的通信基金会服务   检查您是否已在指定的位置启用元数据发布   地址。有关启用元数据发布的帮助,请参阅   MSDN文档在   http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata交流   错误URI:http://xxx.xxxxxxxx.xxx/DPITerminal.svc
  元数据包含无法解析的引用:   'http://xxx.xxxxxxxx.xxx/DPITerminal.svc'。内容类型   应用/肥皂+ xml的;服务不支持charset = utf-8   http://xxx.xxxxxxxx.xxx/DPITerminal.svc。客户和   服务绑定可能不匹配。远程服务器返回了   错误:(415)无法处理消息,因为内容类型   “应用程序/肥皂+ xml的; charset = utf-8'不是预期的类型   “文本/ 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端点存在问题?这很奇怪,因为XML Endpoint正在共享JSON Endpoint的绑定配置,而JSON没有任何问题。

另外,让我澄清一下,我只是遇到了WCF测试客户端的问题。 JSON&amp; XML端点都正常工作。

编辑:

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

1 个答案:

答案 0 :(得分:4)

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

有解决方法可以解决此问题:

  1. 将端点bindingConfiguration的{​​{1}}属性从address="x"更改为web
  2. 添加新的web2 web2配置(复制Web配置):
  3. 新绑定配置的代码:

    webHttpBinding

    <强>更新

    WCF测试客户端无法获取<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> 的元数据,因为此类元数据不存在。 RESTfull服务不支持用于webHttpBindingbasicHttpBinding的WSDL或类似协议。当WCF测试客户端尝试在两种情况下(当WCF测试客户端发生故障时,如果没有)时,服务返回错误,但出于某些原因,在建议的解决方法的情况下,WCF测试客户端设法吞下错误。如果没有WCF测试客户端源代码,很难说为什么。

    跟踪查看器中的

    错误:

    enter image description here