我可以通过浏览器获取服务的xml内容
但是不能以某种方式在Visual Studio中添加带有?wsdl扩展名的链接作为服务引用。
Visual Studio中的错误消息;
网址中的文档 http:// ****?wsdl不是 被识别为已知的文档类型。来自每个已知的错误消息 类型可以帮助您解决问题: -来自“ XML Schema”的报告是“ W3C XML Schema的根元素应该是,其命名空间应该是 'http://www.w3.org/2001/XMLSchema'。”。 -“ DISCO文档”中的报告是“ URL http:// ****?wsdl上的发现文档” 找到了。”
我该如何解决?
答案 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配置和设置不正确。