次のページの例に従っています。http://msdn.microsoft.com/en-us/library/aa395224.aspxしかし、実行すると次のエラーが発生します
サービス MyServiceLibrary によって実装されたコントラクトのリストに、コントラクト名 'IMetadataExchange' が見つかりませんでした。ServiceMetadataBehavior を構成ファイルまたは ServiceHost に直接追加して、このコントラクトのサポートを有効にします。
MyServiceHostFactory はそのページからほとんどコピーされており、次のようにルート テーブルに追加しています。
RouteTable.Routes.Add(new ServiceRoute("V1", new MyServiceHostFactory(), typeof(MyServiceLibrary)));
私の設定ファイル
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true" />
</system.webServer>
</configuration>
構成ファイルに構成の更新 (以下) を追加すると、サービスは実行されますが、ServiceMetaDataBehaviour が検出され、SelfDescribingServiceHost 全体が冗長になりますか?
ServiceMetadataBehavior mexBehavior = this.Description.Behaviors.Find<ServiceMetadataBehavior>();
設定
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>