我下面從以下頁面的例子。 http://msdn.microsoft.com/en-us/library/aa395224.aspx,但運行時出現以下錯誤定製ServiceHostFactory:合同名稱「IMetadataExchange接口」找不到
無法在服務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>
我添加端點到我的代碼,但它仍然給出了同樣的錯誤調用AddServiceEndpoint()之前添加mexBehaviour我得到這個錯誤。這個鏈接沒有幫助,我在創建這個問題時看到了它。當我打電話AddServiceEndpoint上我的課從繼承的ServiceHost除非我在serviceBehaviors中失敗的目的的配置加上它只是立即引發。 – LivingOnACloud