WCF服务最大方法数

5 wcf web-services

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

Tan*_*ner 7

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

在尝试向现有功能添加新功能时WCF Service,我在尝试" 更新服务引用 "时遇到了错误- 与默认值maxNameTableCharCount太小而无法处理mex传输大小.

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

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

读取XML数据时已超出最大名称字符集计数配额(16384).nametable是用于存储XML处理期间遇到的字符串的数据结构 - 具有非重复元素名称,属性名称和属性值的长XML文档可能会触发此配额.通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象上的MaxNameTableCharCount属性,可以增加此配额.第1行,第332845号.

Server Mex端点应指定如下:

<endpoint address="mex" 
          binding="customBinding" 
          contract="IMetadataExchange" 
          name="" 
          bindingConfiguration="customMex" 
          listenUriMode="Explicit" />
Run Code Online (Sandbox Code Playgroud)

使用Custom Binding块指定如下:

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

如果您遇到有关服务的许多方法的问题,这可能会有所帮助.


cas*_*One 2

没有上限。AFAIK,你想拥有多少就可以拥有多少。

但实用与否又是另外一回事了。如果单个合约上有太多方法,它将变得非常笨重。