2009-05-18 98 views
5

我已经尝试了好几次让我的WCF服务暴露元数据。相反,我一直保持异常:WCF元数据不能正常工作

合同名称“IMetadataExchange接口” 不能在由服务 SecurityBroker实施 合同的名单上找到。直接向 配置文件或 ServiceHost添加ServiceMetadataBehavior以启用对此合同的支持 。

...当使用IE手动浏览服务时。

(我假设这是一样的道理,为什么我的客户端应用程序无法生成服务引用婴儿的步骤和所有。)

可是我的web.config看起来不错:

<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
<behaviors> 
    <endpointBehaviors> 
     <behavior name="webHttpEnablingBehaviour"> 
      <webHttp /> 
     </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
     <behavior name="webHttpEnablingBehaviour"> 
      <serviceMetadata httpGetEnabled="true" /> 
     </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service name="IWW.MIGTurbo2.WCF.Security.SecurityBroker"> 
     <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> 
     <endpoint address="" 
      binding="webHttpBinding" 
      bindingConfiguration="default" 
      contract="IWW.MIGTurbo2.WCF.Security.ISecurityBroker" 
       behaviorConfiguration="webHttpEnablingBehaviour"> 
     </endpoint> 
    </service> 
</services> 
<client /> 
<bindings> 
    <webHttpBinding> 
     <binding name="default" /> 
    </webHttpBinding> 
</bindings> 
</system.serviceModel> 

所以我有我的IMetadataExchange合同定义与mex罚款,并迷上了,据我所知。我错过了一些愚蠢的东西吗?

编辑

我的服务定义如下图所示,如果这是有用的:

<%@ ServiceHost Language="C#" Debug="true" Service="IWW.MIGTurbo2.WCF.Security.SecurityBroker" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %> 

回答

9

您的配置文件具有“终结点”元素的behaviorConfiguration属性,但你也需要它“服务”元素。

+0

优秀,这是得到了它!非常感谢。 – 2009-05-18 09:55:29

2

我对所有人都使用NetTcpBinding。在我的情况,我有同样的问题,并通过添加解决它:

(一)behaviorConfiguration =“”到MEX终结

<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" behaviourConfiguration="" /> 

(b)在behaviorConfiguration =“MEX”的服务定义:

<services> 
    <service name="AcmeService" behaviorConfiguration="mex"> 

(三)项行为

<behaviors> 
    <serviceBehaviors> 
     <behaviour name="mex"> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
      <serviceMetadata /> 
     </behavior> 
    </serviceBehaviors> 
    </behaviors> 
+0

这帮了我,所以我有upvoted,但请更正您的ansewer说includeExceptionExceptionDetailInFaults intead的includeExceptionDetailInFauls – caa 2015-10-19 11:22:01