我创建了使用IIS 6(Windows XP)托管的WCF服务:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myServiceBehaviors">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="Namespace.Class" behaviorConfiguration="myServiceBehaviors">
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
我使用Visual Studio 2010创建了虚拟目录(MyVirtualFolder),当我将浏览器指向“http://localhost/MyVirtualFolder/MyService.svc”时 我得到错误页面告诉我我应该打开metadataExchange接口,说明如何操作,我将如何修改配置文件。我仔细检查了一下,我的配置等于html页面提出的配置。
为什么IMetaDataExchange接口不可用?
提前谢谢!
答案 0 :(得分:0)
尝试<serviceMetadata />
而不是<serviceMetadata httpGetEnabled="true"/>
如果在IIS中托管Web服务,则会有* .svc文件。您不需要端点来获取元数据,删除端点,并且所有端点都可以正常工作..
答案 1 :(得分:0)
从address="mex"
端点移除IMetadataExchange
。
此外,您的服务本身也没有实际的终点。
如果可能,请尝试使用SvcConfigEditor,WCF配置编辑器(Windows SDK的一部分)来获取有效的服务和客户端配置。
答案 2 :(得分:0)
最后我发现了原因:
<service name="Namespace.Class">
指出错误的类:(