使用net tcp绑定托管WCF服务。错误:可能无法访问服务元数据

时间:2012-09-25 06:39:16

标签: wcf nettcpbinding

我有一个Service Application,它有以下web.config文件:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>

  <standardEndpoints>
  </standardEndpoints>
  <bindings>
  </bindings>
  <services>
  <service behaviorConfiguration="metadatabehaviour" name="WCF_Service.HistorianService">
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
      contract="WCF_Service.IHistorianCollectorService" />
    <endpoint address="net.tcp://localhost:8081/mex" binding="mexTcpBinding"
      contract="IMetadataExchange" />
    <endpoint address="net.tcp://localhost:8081" binding="netTcpBinding"
      contract="WCF_Service.IHistorianCollectorService" />
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="metadatabehaviour">
      <serviceMetadata httpGetEnabled="false" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>

 <serviceHostingEnvironment multipleSiteBindingsEnabled="false" />
 </system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
 </system.webServer>

 </configuration>

我收到以下错误:无法添加服务。可能无法访问服务元数据。确保您的服务正在运行并公开元数据。

如果我只是实现&#34; basicHttpBinding&#34;我可以成功运行该服务。但是只要我介绍一个&#34; netTcp&#34;绑定,我开始得到这个错误。我已经改变了“mex&#39;绑定到&#39; mexTcpBinding&#39;但仍然存在错误。 我试过切换相关属性。知道如何纠正这个错误吗?

2 个答案:

答案 0 :(得分:0)

您似乎确实禁用了元数据交换:

<serviceMetadata httpGetEnabled="false" />

应该设置为true!

答案 1 :(得分:0)

我找到了解决方案。我的net.tcp端口号为'0'。我不知道这是可能的。将它改为808就可以了。