Imetadataexchangeは、サービスによって実装された契約のリストには見つかりませんでした

StackOverflow https://stackoverflow.com/questions/3871827

質問

このエラーの解決をWebに検索しましたが、私が見つけたものはすべて、私が持っているものが正しいことを示唆しています。

たぶん誰かが見て、私が見ることができない明らかな間違いを見つけることができるかもしれません。

Windowsサービスがあり、2つの契約をホストしています。

  1. IconFigurationService
  2. iconfigurationadminservice

管理サービスは、両方の契約に基本的な方法を実装することを望んでいるため、標準サービスから継承します。

問題は、MEXを追加しようとするまで、サービスを正常にホストできることです。

次に、次の例外が表示されます。

契約名「Imetadataexchange」は、サービス「ConfigurationWCFService」によって実装された契約のリストには見つかりませんでした。

これは私の構成であり、すべてが構成によって構成され、コードを介して行われるものはありません。

<system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="tcpBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
          <security mode="None" />
        </binding>
      </netTcpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="serviceBehavior" name="BrightsideGroup.Repa.Configuration.ConfigurationWCFService">
        <endpoint address="ConfigurationService" binding="netTcpBinding"
          bindingConfiguration="tcpBinding" name="tcpConfiguration" contract="BrightsideGroup.Repa.Configuration.IConfigurationWCFService" />
        <endpoint binding="mexHttpBinding" address="mex" name="mex" contract="IMetaDataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://GD01316:9123/Repa" />
            <add baseAddress="http://GD01316:8123/Repa" />
          </baseAddresses>
        </host>
      </service>
      <service behaviorConfiguration="serviceBehavior" name="BrightsideGroup.Repa.Configuration.ConfigurationWCFAdminService">
        <endpoint address="ConfigurationAdminService" binding="netTcpBinding"
          bindingConfiguration="tcpBinding" name="tcpConfigurationAdmin"
          contract="BrightsideGroup.Repa.Configuration.IConfigurationAdminWCFService" />
        <endpoint binding="mexHttpBinding" address="mex" name="mex" contract="IMetaDataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://GD01316:9124/Repa" />
            <add baseAddress="http://GD01316:8124/Repa" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="serviceBehavior">
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
役に立ちましたか?

解決

ケーシングが間違っています - WCF構成はケースに敏感です

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

「D」はで大文字になっていないことに注意してください IMetadataExchange 再確認できます MSDNの構文.

他のヒント

私はすべての人にnettcpbindingを使用しています。私の場合、私は同じ問題を抱えていて、次のことを解決しました。

(a)behaviourconfiguration = "" to the mex endpoint

<endpoint address="mex" 
          binding="mexTcpBinding" 
          contract="IMetadataExchange" 
          behaviourConfiguration="" />

(b)behaviourconfiguration = "mex" of service定義:

<services>
    <service name="AcmeService" behaviourConfiguration="mex">

(c)動作エントリ

<behaviors>
    <serviceBehaviors>
        <behaviour name="mex">
            <serviceDebug includeExceptionDetailInFaults="false"/>
            <serviceMetadata />
        </behavior>
     </serviceBehaviors>
 </behaviors>

私は願っています 次のリンク あなたに助けを提供するかもしれません。

また、以下を追加してみてください。

<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top