【问题标题】:Failed to add a service reference to WCF service未能将服务引用添加到 WCF 服务
【发布时间】:2016-10-05 20:44:13
【问题描述】:

当尝试向我的 .NET 项目添加对 WCF 服务的服务引用时,我收到了一个错误:

添加服务失败。服务元数据可能无法访问。确保您的服务正在运行并公开元数据。

在做了一些研究后,我决定在我的服务中添加一个元数据交换端点:

<endpoint 
  address="mex" 
  binding="mexHttpsBinding" 
  contract="IMetadataExchange"/>

现在,添加 enedpoint 后,我​​得到了不同类型的错误:

找不到与绑定 BasicHttpBinding 的端点的方案 http 匹配的基地址。注册的基地址方案是 [https]。

我在这里做错了什么?

如果我在浏览器中打开服务,它就可以正常工作:

https://alias.domain.com/ProjectName/MyService.svc?wsdl

【问题讨论】:

    标签: wcf


    【解决方案1】:

    mexHttpBinding 仅适用于http://,但由于您的服务通过https:// 公开,您需要将其更改为mexHttpsBinding。

    请看这里:https://msdn.microsoft.com/en-us/library/aa395212(v=vs.110).aspx

    【讨论】:

    • 其实我得到了一个错误Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service 而且我无法在服务器上启用匿名身份验证,因为它已根据需要禁用在服务器上的其他应用程序
    • @ElenaDBA 匿名身份验证在您的 web.config 的 system.webServer 元素中基于每个目录(和每个应用程序)配置 - 因此您可以覆盖它 - 除非您的服务器专门配置为拒绝覆盖。
    【解决方案2】:

    解决了!

    问题在于 WSDL 中的一些 XSD 引用,尤其是 schemaLocation。由于某种原因,schemaLocation 使用了机器名而不是域名。在我修复之后,我能够添加对服务的引用

    【讨论】:

      猜你喜欢
      • 2013-01-12
      • 2012-02-15
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多