如何限制ASP.NET WebAPI中的最大并发连接/请求/会话

时间:2014-09-06 15:58:59

标签: asp.net iis asp.net-web-api asp.net-web-api2

我正在寻找一种机制来限制使用ASP.NET WebAPI公开的服务的并发连接数。

为什么呢?因为此服务正在执行硬件资源上昂贵的操作,并且我希望防止在压力下降级。

更多信息:

  • 我不知道每段时间会发出多少请求。
  • 此服务在其自己的IIS应用程序池中运行,并且不能选择限制IIS中父站点的最大连接。
  • 我找到了this套件,但支持的算法不包含我感兴趣的算法。

我正在寻找开箱即用的东西(像IIS配置设置一样简单),但我找不到我需要的东西。

任何线索?

谢谢!

1 个答案:

答案 0 :(得分:1)

扩展您的服务可能比限制请求数量更好。您可以将繁重的处理发送到某些后台作业,并保留您的API服务请求。

但假设上述情况无法完成,您将需要使用其中一个限制包,或者如果没有满足您的要求,请自行编写。

我建议从WebApiContrib开始使用ThrottlingHandler 您可以通过正确实现GetUserIdentifier方法来满足您的需求。

如果没有,您将需要实现自己的MessageHandler,并且提到的处理程序将是一个很好的起点。