无法在Visual Studio中添加服务参考

时间:2018-07-29 19:28:42

标签: wcf wsdl

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

但是不能以某种方式在Visual Studio中添加带有?wsdl扩展名的链接作为服务引用。

Visual Studio中的错误消息;

  

网址中的文档   http:// ****?wsdl不是   被识别为已知的文档类型。来自每个已知的错误消息   类型可以帮助您解决问题:   -来自“ XML Schema”的报告是“ W3C XML Schema的根元素应该是,其命名空间应该是   'http://www.w3.org/2001/XMLSchema'。”。   -“ DISCO文档”中的报告是“ URL http:// ****?wsdl上的发现文档”   找到了。”

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您是否已在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。

现在还添加此服务行为:

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

您将在这里找到完整的文档和良好的示例: WCF Service Behaviors – How to Generate Service Metadata to simplify WCF Client Application Development

然后再次检查WSDL链接是否对您的服务有效。如果您仍然无法使用IIS,则可能要检查IIS的已安装功能,也许您的IIS配置和设置不正确。