2011-04-04 90 views
2

我知道,我的问题有点儿不好意思,但是你认为WCF配额的“最佳”设置是什么? MaxReceivedMessageSize等?寻找最佳的WCF配额设置

我的服务通常返回小值,但有时返回值超过默认配额。还有更大的返回值,我在第二个端点作为流返回。

现在,我认为现在MaxReceivedMessageSize的默认值(无疑问,流式端点使用更高的值;我的问题涉及缓冲通信)65536字节是相当低的。有很多“教程”,只是将这个值设置为Int32.MaxValue,这根本不是一个好主意;) 那么你觉得呢?哪些值是可行的,但也足够安全,不会使DoS和其他内容容易受到攻击?

Regards

回答

0

Vialbe的值真的取决于您所期望的数据大小。如果您知道有时可以获得高达256KB的值,则将该值设置为256KB。在内部服务的情况下,限制可能设置为Int32.MaxValue,但我认为更多的是关于传输数据的假设。对于公共Web服务,您几乎不会将值设置为Int32.MaxValue,因为任何人都可以炸毁您的服务器。

Btw。如果我们正在讨论从服务返回的数据,那么这个决定是在客户端上 - 配额和目标接收消息都不发送消息,所以如果你的服务响应客户端请求返回数据,限制将在客户端设置。例如,在公共Web服务的情况下,您无法控制所有客户端,因此您还必须考虑要返回多少数据。

单独的端点是客户端和服务器端的单独配置。

+0

这将是一个公共Web服务器。该服务可能会收到高达〜512KB(因此我将此值设置为服务上的MaxReceiveMessageSize),并且也可能发送高达〜512KB。我不知道的以及我不确定的是:这个值是否“危险”?它太高了吗?如果有人发送2000请求,服务可能会分配1GB RAM ... – khlr 2011-04-06 18:43:16

+1

并且您接受2000个并发请求吗?默认情况下,服务限制将允许只有16个处理器计算并发呼叫,因此这是您抵御DoS攻击的下一级防御。在这里阅读有关默认限制值的信息:http://blogs.msdn.com/b/wenlong/archive/2009/07/26/wcf-4-higher-default-throttling-settings-for-wcf-services.aspx和here关于设置自定义限制http://msdn.microsoft.com/en-us/library/ms731379.aspx – 2011-04-06 20:08:38

+0

啊当然,throtteling可能会减少这个问题。所以,512kb可能没问题,对吧?谢谢 :) – khlr 2011-04-09 08:32:55