2010-01-22 56 views
2

我們注意到這個值的唯一時間似乎是服務因爲值太低而崩潰的時候。解決這個問題的快速方法是將其設置爲一些非常大的數字。然後沒問題。WCF MaxReceivedMessageSize的點是什麼?

我想知道的是,是否有任何負面的後果來設置這個值高?

我可以看到,它可能會給拒絕服務攻擊提供一些保護,但它有沒有其他功能?

+1

我認爲重點是作爲保護agains拒絕服務攻擊,就像你說的 – 2010-01-22 13:35:17

回答

3

它有助於限制您的WCF服務器的壓力。如果允許1'000個連接,並且允許每個連接向您發送1 MB數據 - 您的服務器可能需要1 GB RAM - 否則可能會發生大量交換/垃圾。

消息大小限制(以及併發連接/調用的限制)有助於將RAM使用(以及CPU使用率)保持在可管理的級別。

它還允許您擴展,具體取決於您的服務器。如果您擁有單核CPU和4 GB或RAM,則可能無法像處理16路CPU和32 GB或更多內存那樣處理相當多的流量。通過包括MaxReceivedMessageSize在內的各種設置,您可以將WCF環境調整爲基礎硬件的功能。

當然,正如您已經提到的那樣:WCF中的許多設置保持OFF或設置爲較低值,專門用於阻止惡意用戶使DoS攻擊淹沒您的服務器並關閉它。

+0

謝謝你的回答。只是爲了確保我已經理解了它。在你的例子中,如果你允許1MB和連接發送10kB的消息。在服務器上是否會分配1MB的內存,還是隻使用10Kb? – 2010-01-22 15:42:27

+2

據我所知,如果服務電話需要10kb,它將分配10kb - 不多。 1 MB的限制就是這個 - 一個上限。如果服務呼叫請求超過1 MB,則會被拒絕。但WCF不會僅僅分配1 MB而不需要它。 – 2010-01-22 16:50:56