为什么IMetadataExchange不可见?

时间:2011-07-06 07:49:44

标签: .net wcf web-services configuration wcf-configuration

我创建了使用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接口不可用?

提前谢谢!

3 个答案:

答案 0 :(得分:0)

尝试<serviceMetadata />而不是<serviceMetadata httpGetEnabled="true"/> 如果在IIS中托管Web服务,则会有* .svc文件。您不需要端点来获取元数据,删除端点,并且所有端点都可以正常工作..

答案 1 :(得分:0)

address="mex"端点移除IMetadataExchange

此外,您的服务本身也没有实际的终点。

如果可能,请尝试使用SvcConfigEditor,WCF配置编辑器(Windows SDK的一部分)来获取有效的服务和客户端配置。

答案 2 :(得分:0)

最后我发现了原因:

<service name="Namespace.Class">指出错误的类:(