元数据交换问题-方法数量限制



我有一个公开34个方法的WCF服务。直到今天,使用MetadataExchangeClient的元数据交换工作得很好,但突然我开始得到以下异常:

元数据包含无法解析的引用:http://localhost:1150/service.svc?wsdl=wsdl0

最"有趣"的事情是,如果我注释掉服务契约中的一些方法(无论哪些),这样服务暴露的更少方法,我就可以得到正确的元数据。web.config设置为
<system.serviceModel>
<services>
  <service name="(...)" serviceBehavior="(...)">
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>
<behaviors>
    <serviceBehaviors>
        <behavior name="(...)"><serviceMetadata httpGetEnabled="True"></behavior>
    <serviceBehaviors>
</behaviors>

所有名称都是限定名称空间的,并且在公开(例如15个方法)时一切都运行良好。无论何时我试图暴露更多,不管是哪一个,我都会得到那个异常。我做错了什么?

我打赌添加的方法使消息大小大于默认的最大值。您是否有一个内部异常说"传入消息的最大消息大小配额(65536)已超过"?

如果是这样,增加您的mex绑定的MaxReceivedMessageSize:

    <services>
        <service>
            <endpoint contract="IMetadataExchange" binding="wsHttpBinding" bindingConfiguration="mexBinding" address="mex" />
        </service>
    </services>
    <bindings>
        <wsHttpBinding>
            <binding name="mexBinding" maxReceivedMessageSize="5000000">
                <security mode="None"/>
            </binding>
        </wsHttpBinding>
    </bindings>

注意端点绑定不是标准的"mexHttpBinding"。我是从http://www.dasblonde.net上发布的完整示例复制的。

最新更新