11

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

たぶん誰かが見て、私には見えない明らかな間違いを見つけることができるでしょう。

私は2つの契約をホストするWindowsサービスを持っています:

  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>
4

3 に答える 3

12

大文字と小文字が正しくありません-WCF構成では大文字と小文字が区別されます

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

「D」は大文字ではないことに注意してください。MSDNIMetadataExchangeで構文を再確認できます。

于 2010-10-06T11:23:40.790 に答える
6

私はすべてにNetTcpBindingを使用しています。私の場合、同じ問題が発生していて、次のように追加して解決しました。

(a)mexエンドポイントへのbehaviourConfiguration =""

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

(b)サービス定義に対するbehaviourConfiguration = "mex":

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

(c)動作エントリ

<behaviors>
    <serviceBehaviors>
        <behaviour name="mex">
            <serviceDebug includeExceptionDetailInFaults="false"/>
            <serviceMetadata />
        </behavior>
     </serviceBehaviors>
 </behaviors>
于 2013-01-22T20:01:08.467 に答える
2

次のリンクがあなたの助けになることを願っています。

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

<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
于 2010-10-06T11:46:17.907 に答える