可以为 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】:

MaxReceivedMessageSizeMaxBufferSize 的值必须相同,MaxBufferSizeInt32

【讨论】:

不正确 - 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 服务

为 IPC 和远程访问验证 WCF

我可以将我的网站资源设为私有吗?

我可以将一个美味的模型资源字段设为只读吗?