我知道这个问题已经被提出并回答了很多次,但是所有应该有效的样例在今天似乎都不能用。
当我尝试启动主机时,我一直收到以下错误:
"在服务TraceService实现的合同列表中找不到合同名称“IMetadataExchange”。请向配置文件或ServiceHost直接添加ServiceMetadataBehavior以启用对此合同的支持。"
按照微软的示例,我的服务正在托管在托管 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"/>
任何帮助都将不胜感激 :)