我们有各种接受请求的网络服务,但在某些时间段我们不想接受请求。 (我现在不会讨论为什么,但这是一项要求)。
在这些情况下,我想在收到请求时中止请求,并且想知道执行此操作的最佳方法,以及ASP.NET管道中最合适的位置。
我目前在global.aspx的BeginRequest中返回ServiceUnavailable状态。 是实现此类功能的正确方法还是有更好的选择。 (_webState是我们用于服务当前状态的内部变量)
if (_webState != WebStates.Runnable)
{
Response.StatusCode = (int)System.Net.HttpStatusCode.ServiceUnavailable;
Response.Write("<p>The Service is not available to accept requests</p>");
Response.End();
}
答案 0 :(得分:1)
我认为正确的方法是将create a custom HTTP module作为ASP.NET请求处理管道的扩展。在此模块中,您将能够根据所需策略拒绝连接。 ServiceUnavailable 是一种标准的方式,我们也是这样做的。
但这里存在一个非常大的“但是”=)。通过这种方式,您只能禁用针对ASP.NET应用程序的请求,如果您需要拒绝对特定应用程序发出的所有请求,则需要编写将停止相应 ApplicatonPool 的自定义工具。