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