如何限制ASP.NET WebAPI中的最大并发连接数/请求数/会话
问题描述:
我正在寻找一种机制来限制使用ASP.NET WebAPI公开的服务的并发连接数。如何限制ASP.NET WebAPI中的最大并发连接数/请求数/会话
为什么?由于此服务正在执行对硬件资源而言非常昂贵的操作,因此我想在压力下防止降级。
更多信息:
- 我不知道有多少请求将每一段时间发放。
- 此服务在其自己的IIS应用程序池中运行,并且限制IIS中父站点上的最大连接数不是一个选项。
- 我发现this套件,但支持的算法不包括一个我感兴趣的
我正在寻找的东西开箱即用(东西那么简单,因为一个IIS配置设置)但我无法找到我需要的东西。
任何线索?
谢谢!
答
扩大您的服务可能会比限制请求数量更好。您可以将繁重的处理发送到一些后台作业并保留您的API服务请求。
但是,假设无法完成上述操作,您将需要使用其中一个可用的节流包,或者如果没有满足您的要求,请编写自己的节流包。
我建议从WebApiContrib 开始与ThrottlingHandler您可能能够通过正确地实施该GetUserIdentifier方法,以满足您的需求。
如果不是,您将需要实现自己的MessageHandler,并且提到的处理程序将是一个很好的起点。
为了帮助缩小可能的答案(并避免[XY问题](http://meta.stackexchange.com/q/66377/67392)):为什么? – Richard 2014-09-06 16:03:51
更新了问题。 – mo5470 2014-09-06 17:31:11