WCF MetaData无法正常工作

Pro*_*m.X 5 wcf

我已多次尝试让我的WCF服务公开MetaData.相反,我一直保持例外:

在服务SecurityBroker实现的合同列表中找不到合同名称"IMetadataExchange" .将ServiceMetadataBehavior直接添加到配置文件或ServiceHost以启用对此合同的支持.

...使用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>
Run Code Online (Sandbox Code Playgroud)

所以我的meetadataExchange合约定义为mex很好,并且我已经看到了.我错过了什么愚蠢的东西?

编辑

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

<%@ ServiceHost Language="C#" Debug="true" Service="IWW.MIGTurbo2.WCF.Security.SecurityBroker" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory"   %>
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 9

您的配置文件在"endpoint"元素上具有behaviorConfiguration属性,但您还需要在"service"元素上使用它.