wcf - 无法在 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 的发现文档。”。
我该如何解决?
解决方案
您是否在 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 配置和设置不正确。
推荐阅读
- reactjs - 你如何在反应中设置嵌套 css 的样式?
- javascript - 当我使用 JQuery.find 时,哪个是“选择”选项列表的 jQuery 选择器
- javafx - 如何使 JavaFX Stage 始终处于底部?
- java - 如何在JAVA中找到随机生成的数字的平均值
- c - 如何使用 C 或 glsl 实现 2D FFT 以将图像转换为频率空间并返回
- c - 调用 fork() 然后变成调用 sys_fork() 的过程是什么?
- php - preg_split :根据非常具体的模式拆分字符串
- tensorflow - TensorFlow 中的 Adam:矩估计发生在哪里?
- dart - 使用 Inherited Widget 时如何处理 bloc?
- image - 更改产品图像颜色