Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何不限制maxBufferSize和maxReceivedMessageSize_C#_Wcf - Fatal编程技术网

C# 如何不限制maxBufferSize和maxReceivedMessageSize

C# 如何不限制maxBufferSize和maxReceivedMessageSize,c#,wcf,C#,Wcf,我有一个ASP.NET(C#)4.0 WCF应用程序。我收到消息错误: 错误:已超过传入邮件的最大邮件大小配额(65536)。要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性 我把它增加到 maxBufferSize="2097152" maxBufferPoolSize="524288" maxReceivedMessageSize="2097152" 它很好用。但我担心下次可能会再次超过配额 我可以无限制地设置此maxBufferSize和maxRece

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

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

我把它增加到

maxBufferSize="2097152" maxBufferPoolSize="524288" maxReceivedMessageSize="2097152"
它很好用。但我担心下次可能会再次超过配额

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

提前感谢您

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

您可以将其设置为的最大值为20亿(
int.MaxValue
in.NET)—对应于2 GB(2'147'483'648字节)的数据


这对你的需求足够了吗?

< P>,如果你用大的上传或下载来缓冲你的缓冲区,考虑流作为另一种选择。 我可以无限制地设置此maxBufferSize和maxReceivedMessageSize吗 ?

不。你不能那样做

将值设置为最大值,如:

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


另一方面,它的类型是
long
或,它支持的最大值是:9223372036854775807

如果动态使用此代码,则应更改缓冲区大小

 var binding = new BasicHttpBinding();
        binding.ProxyAddress = new Uri(string.Format("http://{0}:{1}", proxyAddress, proxyPort));
        binding.UseDefaultWebProxy = false;
        binding.Security.Mode = BasicHttpSecurityMode.Transport;
        binding.MaxReceivedMessageSize = Int32.MaxValue; //IMPORTANT
        binding.MaxBufferSize = Int32.MaxValue; //IMPORTANT
        binding.MaxBufferPoolSize = Int32.MaxValue;//IMPORTANT
        binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
        binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic;
如果您正在使用webconfig,请使用此代码

<bindings>
<basicHttpBinding>
    <binding name="basicHttp" allowCookies="true"
             maxReceivedMessageSize="20000000" 
             maxBufferSize="20000000"
             maxBufferPoolSize="20000000">
        <readerQuotas maxDepth="32" 
             maxArrayLength="200000000"
             maxStringContentLength="200000000"/>
    </binding>
</basicHttpBinding>


在4.5中,最大值是int64@Hoppe,对于.Net framework 3.0,它的
int64
,对于
MaxReceivedMessageSize
MaxBufferSize
则是.Net framework 3.0和更高版本中的
int
类型。谢谢你的评论,这让我编辑了我在答案中的错误。