Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
WCF MaxReceivedMessageSize有什么意义_Wcf_Maxreceivedmessagesize - Fatal编程技术网

WCF MaxReceivedMessageSize有什么意义

WCF MaxReceivedMessageSize有什么意义,wcf,maxreceivedmessagesize,Wcf,Maxreceivedmessagesize,我们注意到这个值的唯一时间似乎是当服务崩溃时,因为该值太低。解决这个问题的快速方法是将其设置为某个非常大的数字。那没问题 我想知道的是,把这个值设置得高有什么负面影响吗 我可以看出,它可能会提供一些保护,免受拒绝服务攻击,但它还有其他功能吗?它有助于限制WCF服务器的压力。如果您允许1000个连接,并且每个连接允许向您发送1MB的数据—您的服务器中可能需要1GB的RAM—或者可能会发生大量交换/破坏 对消息大小的限制(以及对并发连接/调用的限制)有助于将RAM使用率(以及CPU使用率)保持在可管

我们注意到这个值的唯一时间似乎是当服务崩溃时,因为该值太低。解决这个问题的快速方法是将其设置为某个非常大的数字。那没问题

我想知道的是,把这个值设置得高有什么负面影响吗


我可以看出,它可能会提供一些保护,免受拒绝服务攻击,但它还有其他功能吗?

它有助于限制WCF服务器的压力。如果您允许1000个连接,并且每个连接允许向您发送1MB的数据—您的服务器中可能需要1GB的RAM—或者可能会发生大量交换/破坏

对消息大小的限制(以及对并发连接/调用的限制)有助于将RAM使用率(以及CPU使用率)保持在可管理的水平

它还允许您根据服务器进行扩展。如果您有一个单核CPU和4 GB或RAM,您可能无法处理与16路CPU和32 GB或更多RAM一样多的流量。通过各种设置,包括MaxReceivedMessageSize,您可以根据底层硬件的功能调整WCF环境


当然,正如您已经提到的:WCF中的许多设置被关闭或设置为较低的值,特别是为了阻止恶意用户用DoS攻击淹没您的服务器并将其关闭。

我认为主要的一点是保护您的服务器免受DoS攻击,正如您所说的感谢您的回答。只是为了确定我已经明白了。在您的示例中,如果您允许1MB,并且a连接发送10kB的消息。服务器上会分配1MB内存,还是只使用10Kb。据我所知,如果服务调用需要10Kb,它将分配10Kb,而不是更多。1MB的限制只是一个上限。如果服务调用请求超过1MB,它将被拒绝。但WCF不会只是简单地分配1MB而不真正需要它。