【问题标题】:WCF Service Max number of MethodsWCF 服务最大方法数
【发布时间】:2014-04-05 15:58:40
【问题描述】:

可以通过单个 WCF 服务合同公开的方法/操作的最大数量是多少?

【问题讨论】:

    标签: wcf web-services


    【解决方案1】:

    虽然没有最大值,您可能会遇到Metadata Exchange 的问题 - 以及以下配置值,它是默认值:maxNameTableCharCount。

    在尝试将新功能添加到现有功能 WCF Service 时,我在尝试“更新服务参考”时遇到错误 - 与 maxNameTableCharCount 的默认值太小而无法处理有关mex 传输的大小。

    可以通过在服务器配置中添加自定义 mex binding 来覆盖 Metadata Exchange 的默认值。

    如果超出配置值,当您尝试添加或更新服务参考时,您可能会看到如下错误消息:

    已超过最大可命名字符数配额 (16384) 在读取 XML 数据时。命名表是一种数据结构,用于 存储 XML 处理期间遇到的字符串 - 长 XML 文档 具有不重复的元素名称、属性名称和属性值 可能会触发此配额。这个配额可以通过改变 XmlDictionaryReaderQuotas 对象的 MaxNameTableCharCount 属性 创建 XML 阅读器时使用。第 1 行,位置 332845。

    Server Mex 端点应指定如下:

    <endpoint address="mex" 
              binding="customBinding" 
              contract="IMetadataExchange" 
              name="" 
              bindingConfiguration="customMex" 
              listenUriMode="Explicit" />
    

    使用如下指定的自定义绑定块:

    <customBinding>
        <binding name="customMex">
            <textMessageEncoding>
            <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
                          maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
                          maxNameTableCharCount="2147483647" />
            </textMessageEncoding>
            <httpTransport transferMode="Buffered" maxReceivedMessageSize="2147483647" 
                           maxBufferSize="2147483647"/>
        </binding>
    </customBinding>
    

    如果您在服务上遇到很多方法的问题,这可能会有所帮助。

    【讨论】:

    • WCF 工具使用 mex 为客户端生成代理类,但客户端本身从未真正使用过。那么为什么客户端配置文件需要添加这个绑定呢?
    • 你说的很对,客户端配置不需要任何相应的配置。我已经修改了帖子,谢谢。
    • 我按照这种方法没有成功。我正在为我的服务使用 netTcp 绑定。我禁用了 http,因此我指定了 tcpTransport 而不是 httpTransport。但是当我有大量的 OperationContracts 时,这仍然失败。任何人都可以提供任何意见吗?
    • 你如何以编程方式做这种事情?
    • @Alexandru 你到底指的是什么类型的东西?
    【解决方案2】:

    没有最大值。 AFAIK,你想拥有多少就拥有多少。

    但是,它是否实用是另一个问题。如果一个合约的方法太多,会变得很笨重。

    【讨论】:

      【解决方案3】:

      实际的限制可能不超过 10-12 种方法。除此之外,您可能不再描述单个组件的操作。我会非常努力地将任何包含数十个操作的组件重构为多个组件。

      也就是说,我确定也有例外!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-27
        • 1970-01-01
        • 1970-01-01
        • 2010-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多