加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 07:11:44 所属栏目:asp.Net 来源:网络整理
导读:ASP.NET MVC不支持某种RequestFilters – 在控制器和动作实例化之前每个请求执行一次的过滤器吗? 解决方法 您可以创建自己的路由处理程序,这可能在管道中足够早,以实现您的目标. public class MyRoutingHandler : IRouteHandler{ protected virtual IHttpHa
ASP.NET MVC不支持某种RequestFilters – 在控制器和动作实例化之前每个请求执行一次的过滤器吗?

解决方法

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

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处理程序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读