WCF服务最大方法数

WCF服务最大方法数,wcf,web-services,Wcf,Web Services,通过单个WCF服务合同可以公开的方法/操作的最大数量是多少?没有最大数量。你想要多少就有多少,好吗 然而,它是否实用是另一个问题。如果在一个合同上有太多方法,那么它将变得非常笨拙。虽然没有最大值,但您可能会遇到元数据交换以及以下配置值和默认值的问题:maxNameTableCharCount 在尝试将新函数添加到现有功能的WCF服务时,我在尝试“更新服务引用”时遇到了错误,这与maxNameTableCharCount的默认值太小,无法处理mex传输的大小有关 通过在服务器配置中添加自定义mex

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

没有最大数量。你想要多少就有多少,好吗


然而,它是否实用是另一个问题。如果在一个合同上有太多方法,那么它将变得非常笨拙。

虽然没有最大值,但您可能会遇到元数据交换
以及以下配置值和默认值的问题:
maxNameTableCharCount

在尝试将新函数添加到现有功能的
WCF服务时,我在尝试“更新服务引用”时遇到了错误,这与
maxNameTableCharCount
的默认值太小,无法处理
mex
传输的大小有关

通过在服务器配置中添加自定义
mex绑定
,可以覆盖
元数据交换
的默认值

如果超过配置值,则在尝试添加或更新服务引用时,可能会看到如下错误消息:

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

应按如下方式指定服务器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>


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

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


也就是说,我肯定有例外

mex
由WCF工具用于为客户端生成代理类,但客户端本身从未真正使用过。那么为什么客户端配置文件需要添加这个绑定呢?你说得很对,客户端配置不需要任何相应的配置。我现在已经修改了帖子,谢谢。按照这种方法我还没有成功。我正在为我的服务使用netTcp绑定。我禁用了http,因此我指定了tcpTransport而不是httpTransport。但当我有大量的运营合同时,这仍然失败。任何人都能提供任何输入吗?你是如何通过编程来完成这类事情的?@Alexandru你指的到底是什么类型的事情?