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

asp.net – 如何在我的自定义MvcRouteHandler中模拟IgnoreRoute

发布时间:2020-12-16 09:34:24 所属栏目:asp.Net 来源:网络整理
导读:在我的ASP.NET MVC3应用程序中,我尝试模拟“routes.IgnoreRoute(”…“)” 我创建CustomMvcRouteHandler: public class CustomMvcRouteHandler: MvcRouteHandler{ protected override IHttpHandler GetHttpHandler(RequestContext requestContext) { // do
在我的ASP.NET MVC3应用程序中,我尝试模拟“routes.IgnoreRoute(”…“)”
我创建CustomMvcRouteHandler:

public class CustomMvcRouteHandler: MvcRouteHandler
{        
    protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
         // do something
         ....
         return base.GetHttpHandler(requestContext);
    }
}

在我的Global.asax.cs文件中,我有:

protected void Application_Start()
    {
        // ............ 
        RegisterRoutes(RouteTable.Routes);
        // ............
     }


 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("elmah.axd");
        //routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

       routes.MapRoute(
            "Default",// Route name
            "{controller}/{action}/{id}",// URL with parameters
            new { controller = "Home",action = "Index",id = UrlParameter.Optional }
        ).RouteHandler = new CustomMvcRouteHandler();
     }

我怎样才能做到这一点 ?

解决方法

我不完全确定你的问题是什么意思,但我会尽力回答……

要模拟IgnoreRoute,您需要做的就是从路径中关联StopRoutingHandler的实例.如果您正在使用内置的ASP.NET“Route”类,那么您将执行以下操作:

routes.MapRoute(
    "Ignore-This",// Route name
    "ignore/{this}/{pattern}" // URL with parameters
).RouteHandler = new StopRoutingHandler();

与该模式匹配的任何内容都将导致路由系统立即停止处理更多路由.

如果要编写自己的自定义路由(例如,从RouteBase派生的新路由类型),则需要从其GetRouteData方法返回StopRoutingHandler.

(编辑:李大同)

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

    推荐文章
      热点阅读