2012-01-06 59 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

您可以在服务方面做任何事情来阻止客户提出请求。如果您预计高容量,那么您需要通过将负载均衡器放在前面来确保您的服务端点已扩展。

您可以做的最好的方法是实现每个会话实例模式,然后在同一个会话中调用过多的呼叫时返回异常。这仍然意味着您需要处理个别呼叫。

有一种方法可以使用网络负载平衡器来阻止多余的请求,但我认为这不太可能。