2009-08-21 14 views
3

私はWCFサービスを持っています。私はコンソールアプリケーションでサービスをホストしようとしています。IMetadataExchangeコンソールアプリケーションでWCFサービスをホストするときのMEXエンドポイントエラー

私はすべての指示に従っていますhere

すべてコンパイルは正常ですが、実行時に例外が発生します。

サービス名Indexerによって実装された契約の一覧に契約名 'IMetadataExchange'が見つかりませんでした。この契約のサポートを有効にするには、ServiceMetadataBehaviorを構成ファイルまたはServiceHostに直接追加します。方向で今

、私は、私はどこにでも私のWCFサービスやホストのコンソールアプリケーションでIMetadataExchangeを持っていない

<endpoint binding="mexHttpBinding" bindingConfiguration="" 
name="http://localhost:8080/myservice/MEX/" contract="IMetadataExchange" /> 

を追加するように指示しています。

例外はどこから来ましたか?私は行方不明の参照はありますか?

これは私のWCFサービスは、単に契約し、その後MYSERVICEクラスの実装とのインタフェースを持っている

namespace WcfConsoleHost 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Type type = typeof(myservice); 
      using (ServiceHost host = new ServiceHost(type)) 
      { 

       host.Open(); 
       Console.WriteLine("The service is available. Press any key..."); 
       Console.ReadKey(); 
       host.Close(); 
      } 
     } 
    } 
} 

私のコンソールプログラムです。

以下は私のapp.config全体です。

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
     <behaviors> 
      <serviceBehaviors> 
       <behavior name="ServiceBehavior"> 
        <serviceMetadata /> 
       </behavior> 
      </serviceBehaviors> 
     </behaviors> 
     <services> 
      <service name="myservice"> 
       <endpoint address="http://localhost:8080/myservice/" 
       binding="basicHttpBinding" 
        bindingConfiguration="" contract="myservice.Ims" /> 
       <endpoint binding="mexHttpBinding" bindingConfiguration="" 
       address="http://localhost:8080/myservice/MEX/" 
        contract="IMetadataExchange" /> 
      </service> 
     </services> 
    </system.serviceModel> 
</configuration> 

答えて

4

mexエンドポイントには、アドレスに間違った属性があります。アドレスではなく、名前でなければなりません。

+0

私はそれを修正しました!また、実際には behaviorConfiguration = "IndexerServiceBehavior"がサービスタグから見つからなかったと思います。 – Matt

関連する問題