gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 请求过滤器

转载 作者:行者123 更新时间:2023-12-04 14:33:44 24 4
gpt4 key购买 nike

ASP.NET MVC 不支持某种 RequestFilters - 在 Controller 和 Action 实例化之前每个请求执行一次的过滤器吗?

最佳答案

您可以创建自己的路由处理程序,这可能在管道中足够早以实现您的目标。

public class MyRoutingHandler : IRouteHandler
{
protected virtual IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new InterceptingMvcHandler(requestContext);
}

IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext)
{
return GetHttpHandler(requestContext);
}

}

和相应的 mvc 处理程序:
public class InterceptingMvcHandler : MvcHandler
{
public InterceptingMvcHandler(RequestContext requestContext) : base(requestContext)
{
}

protected override IAsyncResult BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, object state)
{
httpContext.Response.Write("<h2>BeginProcessRequest</h2>");
return base.BeginProcessRequest(httpContext, callback, state);
}

protected override void EndProcessRequest(IAsyncResult asyncResult)
{
var context = RequestContext.HttpContext;
base.EndProcessRequest(asyncResult);
if (context != null)
{
context.Response.Write("<h2>EndProcessRequest</h2>");
}
}
}

然后,您可以在路由注册中注册 mvc 处理程序。

关于asp.net-mvc - ASP.NET MVC 请求过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6940371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com