我为我的wcf服务获取以下通信异常,使cal为另一个wcf服务: “已超出传入邮件的最大邮件大小限额(65536)。要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性。”
我通过增加以下尺寸解决了这个问题: maxReceivedMessageSize =“50000000”
但是,在这里,我想知道是否有任何增加消息大小的副作用到如此大的水平。
答案 0 :(得分:5)
是的 - 可能。 WCF默认将此限制设置为低(64K)的原因是:假设您的服务器忙于响应请求,比如数十或数百,并且它们都需要最大的邮件大小。
潜在地,您的服务器可能必须同时分配数十个或数百个消息缓冲区 - 如果您有100个用户并且每个请求64K,那是6.4 MByte - 但如果您有200个用户并且每个请求5 MB - 这是一个服务器中的千兆字节RAM - 仅用于一个服务的消息缓冲区。
所以是的 - 限制最大邮件大小确实有意义,它有助于管理服务器的内存消耗(从而提高性能)。如果你打开它太宽,攻击者可能只会做这样的攻击 - 用虚假的请求充斥你的服务器,每个都分配尽可能多的内存,最终使你的服务器失效(这样的拒绝服务攻击很常见)
答案 1 :(得分:0)
您需要根据网络服务增加配额。如果使用非常大的值,我可以想到的一个副作用是内存使用量会增加,但你可以安全地将其增加到合适的值,而不会产生任何不利影响。