これが何度も尋ねられ、何度も答えられたことは知っていますが、提供されているすべてのサンプルが機能するはずですが、今日は機能したくないようです。
ホストを起動しようとすると、次のエラーが発生し続けます。
「コントラクト名 'IMetadataExchange' は、TraceService サービスによって実装されたコントラクトのリストに見つかりませんでした。ServiceMetadataBehavior を構成ファイルまたは ServiceHost に直接追加して、このコントラクトのサポートを有効にしてください。」
私のサービスは、Microsoft の例に従って、マネージド Windows サービス ホストでホストされています: http://msdn.microsoft.com/en-us/library/ms733069%28v=vs.90%29.aspx
そして、ここに私の素敵でシンプルな設定があります:
<system.serviceModel>
<services>
<service name="Daff.Lae.Service.TraceService">
<endpoint address="" binding="wsHttpBinding" name="TraceService" contract="Contracts.Service.ITraceService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/TraceService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
もちろん、次の行を削除するとエラーが発生しない場合、問題はより興味深いものになります。
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
どんな助けでも非常に非常に高く評価されます:)