无法让 MEX 使用我的 WCF 服务

Posted

技术标签:

【中文标题】无法让 MEX 使用我的 WCF 服务【英文标题】:Unable to get MEX to work with my WCF service 【发布时间】:2013-06-07 09:58:23 【问题描述】:

我认为这可能是由于没有/需要在配置中指定任何基地址。其他一切正常,包括发布 WSDL、调用服务等。但是当我添加 MEX 端点并尝试访问它时,它返回 503 服务不可用。

我的 web.config 如下所示:

<system.serviceModel>
  <bindings>
    <basicHttpsBinding>
      <binding name="ServiceBinding" />
    </basicHttpsBinding>
  </bindings>
  <services>
    <service name="MyServices.CatService" behaviorConfiguration="MyBehavior">
      <endpoint address="" binding="basicHttpsBinding" bindingConfiguration="ServiceBinding" contract="MyServices.ICatService"></endpoint>
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="MyBehavior">
        <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
        <serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />
        <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>

当我浏览到我的服务时,我会收到以下消息:

您已经创建了一个服务。 要测试此服务,您需要创建一个客户端并使用它来调用该服务。您可以使用 svcutil.exe 工具从 具有以下语法的命令行: svcutil.exe http://[mypc]/MyServices/CatService.svc/mex

我有理由确定这与定义端点的方式有关,但我不知道如何解决它。有什么想法吗?

【问题讨论】:

【参考方案1】:

已解决 - 我复制并粘贴的上述 mex 示例是 http,而不是 https。我改变了它 mexHttpsBinding 并且效果很好。我认为由于在本地运行 http 的某些配置,http 不起作用,但我不确定。

【讨论】:

以上是关于无法让 MEX 使用我的 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章

没有 MEX 端点的带有 BasicHttpBinding 的 WCF 服务可以被绝对陌生的人利用吗?

WCF 服务更新给出错误

使用 wsHttpBinding 配置 WCF 服务

如何将具有许多功能的大型 WCF 服务导入 VS 2010?

无法让 Ninject 拦截与 WCF 一起使用

无法让 JSONP 与 WCF 数据服务一起使用