2012-01-06 57 views
1

我正在使用WCF Web API。我想防止方法調用氾濫。我已經將maxConcurrentCalls限制爲10.但是我需要更多的約束。例如,如果某個客戶在3秒內調用相同的方法,它必須拋出關於洪水呼叫的異常。此外,如果某些客戶端每分鐘調用十次具有相同參數的相同方法,則必須予以防止。我怎樣才能以簡單的方式做到這一點?防止WCF氾濫

+0

如何爲Web API設置「maxConcurrentCall」?這很簡單,通過web.config使用標準的wcf服務,但web api呢?你在RouteTable.Routes.MapServiceRoute提供的WebApiConfiguration實例中以編程方式執行它嗎? – Crixo 2012-01-11 21:32:39

+0

@Cristiano我已經將此設置添加到web.config下serviceBehaviors => serviceThrottling – oruchreis 2012-01-19 05:21:31

+0

謝謝,但你如何將添加到web.config中的行爲關聯到特定的「wcf web api」service/api?據我所知,使用「wcf web api」你沒有將service/web api映射到配置文件中。 – Crixo 2012-01-19 16:02:19

回答

3

您可以在服務方面做任何事情來阻止客戶提出請求。如果您預計高容量,那麼您需要通過將負載均衡器放在前面來確保您的服務端點已擴展。

您可以做的最好的方法是實現每個會話實例模式,然後在同一個會話中調用過多的呼叫時返回異常。這仍然意味着您需要處理個別呼叫。

有一種方法可以使用網絡負載平衡器來阻止多餘的請求,但我認爲這不太可能。