首页 > 解决方案 > 无法在 Visual Studio 中添加服务参考

问题描述

我可以通过浏览器获取服务的xml内容

但不知何故无法在 Visual Studio 中添加作为服务引用与 ?wsdl 扩展名相同的链接。

Visual Studio 中的错误消息;

网址为 http://****?wsdl 的文档未被识别为已知文档类型。来自每种已知类型的错误消息可能会帮助您解决问题: - 来自“XML Schema”的报告是“W3C XML Schema 的根元素应该是并且它的命名空间应该是” http://www.w3.org/2001 /XMLSchema '.'. - 来自“DISCO 文档”的报告是“无法找到 URL http://****?wsdl 的发现文档。”。

我该如何解决?

标签: wcfwsdl

解决方案


您是否在 WCF 中启用了元数据发现?

首先,如果您以声明方式设置 WCF 服务(您也可以通过编程方式执行此操作),则需要在 web.config 中的服务中添加这样的 mex(元数据交换)端点:

<service name="myservice">
 <endpoint contract="IMetadataExchange" binding ="mexHttpBinding" address="mex" />
 <endpoing contract="SomeAssembly.SomeService" address="SomeService" binding="basicHttpBinding" ... 

请注意,我不建议您使用 BasicHttpBinding,因为它默认没有设置安全性,例如使用 WsHttpBinding。

现在还要添加这个 serviceBehavior:

<serviceBehaviors>
 <serviceMetadata httpGetEnabled="true" />

您将在此处找到此文档和一个很好的示例: WCF 服务行为 – 如何生成服务元数据以简化 WCF 客户端应用程序开发

然后再次检查 WSDL 链接是否适用于您的服务。如果仍然无法正常工作,您可能需要检查 IIS 的已安装功能,可能是您的 IIS 配置和设置不正确。


推荐阅读