1

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

先感谢您!

4

3 回答 3

0

尝试<serviceMetadata />代替<serviceMetadata httpGetEnabled="true"/>.
如果您在 IIS 中托管 Web 服务,则您有一个 *.svc 文件。您不需要端点来获取元数据、删除端点,一切都会正常工作。

于 2011-07-06T07:57:01.727 回答
0

address="mex"从您的IMetadataExchange端点中删除。

您的服务本身也没有实际的端点。

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

于 2011-07-06T08:00:52.063 回答
0

最后我发现是什么原因:

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

于 2011-07-06T13:22:44.280 回答