可以为 NetNamedPipeBinding 设置 maxReceivedMessageSize 的最大大小是多少?
Posted
技术标签:
【中文标题】可以为 NetNamedPipeBinding 设置 maxReceivedMessageSize 的最大大小是多少?【英文标题】:What is the maximum size that maxReceivedMessageSize can be set to for a NetNamedPipeBinding? 【发布时间】:2010-11-03 12:47:45 【问题描述】:我注意到 2147483647 似乎是 maxReceivedMessageSize 的流行选择,但这是限制吗?
【问题讨论】:
另一方面,您可能需要考虑将其设置为 2 GB 的消息大小意味着您的 WCF 服务器可能必须同时处理多个最大为 2 GB 的消息 - 可以吗?去做??马克 如果你有一个 32 位服务器... 【参考方案1】:不,限制是 Int64.MaxValue1 即:9223372036854775807
【讨论】:
在 web.config 文件中,似乎只有 Int32 限制有效。可能是解析问题。 当通过代码设置这个值时,我得到ArgumentOutOfRange
这个参数的异常。【参考方案2】:
basicHttpBinding 中的 MaxMessageReceivedSize 似乎是 int32 - 将其设置为 int32 的最大值会导致:
此工厂缓冲消息,因此消息大小必须在整数值范围内。 参数名称:bindingElement.MaxReceivedMessageSize
【讨论】:
不,它是 Int64(长):msdn.microsoft.com/en-us/library/…【参考方案3】:MaxReceivedMessageSize
和 MaxBufferSize
的值必须相同,MaxBufferSize
是 Int32
。
【讨论】:
不正确 - MaxBufferSize 仅在您使用缓冲时使用。如果您使用的是 Streaming,那么它会被忽略。这就是 MaxReceivedMessageSize 是 Int64 并且可以不同于 MaxBufferSize 的原因。 你的意思是 maxBufferPoolSize 和 maxReceivedMessageSize 吗? BasicHttpBinding MaxBufferSize 是 Int32,但 MaxReceivedMessageSize 是 Int64。 msdn.microsoft.com/en-us/library/…以上是关于可以为 NetNamedPipeBinding 设置 maxReceivedMessageSize 的最大大小是多少?的主要内容,如果未能解决你的问题,请参考以下文章
通道打开时的 WCF NetNamedPipeBinding 延迟
使用 WCF 和 NetNamedPipeBinding 进行 IPC
无法在 Windows 7 上的 Windows 服务中使用 netNamedPipeBinding 托管和启动 WCF 服务