2011-04-04 124 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