2

次の 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>

次のエラーが表示されます: サービスの追加に失敗しました。サービス メタデータにアクセスできない場合があります。サービスが実行中で、メタデータを公開していることを確認してください。

「basicHttpBinding」を実装するだけでサービスを正常に実行できますが、「netTcp」バインディングを導入するとすぐにこのエラーが発生し始めます。「mex」バインディングを「mexTcpBinding」に変更しましたが、それでもエラーは解決しません。関連するプロパティを切り替えてみました。このエラーを修正する方法はありますか?

4

2 に答える 2

0

私は解決策を見つけました。net.tcp のポート番号の値が「0」でした。それが可能だとは知りませんでした。それを808に変更しました。

于 2012-09-28T11:08:12.030 に答える
0

実際にメタデータ交換を無効にしているようです:

<serviceMetadata httpGetEnabled="false" />

true に設定する必要があります。

于 2012-09-25T19:41:21.530 に答える