如何不限制maxBufferSize和maxReceivedMessageSize

use*_*628 1 c# wcf

我有一个ASP.NET(C#)4.0 WCF应用程序。我收到消息错误:

错误:超出了传入邮件的最大邮件大小配额(65536)。要增加配额,请在适当的绑定元素上使用MaxReceivedMessageSize属性。

我已经增加到

maxBufferSize="2097152" maxBufferPoolSize="524288" maxReceivedMessageSize="2097152"
Run Code Online (Sandbox Code Playgroud)

它工作正常。但是,恐怕下次可能会再次超出配额。

我可以把这个maxBufferSizemaxReceivedMessageSize有没有限制?

提前谢谢你

mar*_*c_s 5

您不能将其设置为“无限制” - 无论如何,您将如何处理无限大的消息?

您可以将其设置为 20 亿(int.MaxValue在 .NET 中) - 这对应于 2 GB(2'147'483'648 字节)的数据。

这足以满足您的需求吗?


Hab*_*bib 5

我可以无限制地设置此maxBufferSize和maxReceivedMessageSize吗?

你不能做到这一点。

将您的值设置为Max,例如:

  maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
Run Code Online (Sandbox Code Playgroud)

MaxBufferSize是类型int。因此,它可以支持的最大值是Int32.MaxValue(2147483647)以利用最大允许大小。Int.MaxValue仅比2 GB的数据少一个字节)

另一方面,MaxReceivedMessageSize的类型为longInt64,其支持的最大值为:9,223,372,036,854,775,807