Asp.net mvc 当路由不满足时抛出404错误
使用默认路由Asp.net mvc 当路由不满足时抛出404错误,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,使用默认路由 routes.MapRoute( "Admin", // Route name "Admin/{action}", // URL with parameters new { controller = "Admin", action = "Index" } // Parameter defaults
routes.MapRoute(
"Admin", // Route name
"Admin/{action}", // URL with parameters
new { controller = "Admin", action = "Index" } // Parameter defaults
);
我们的应用程序中有很多路由(大约90%)正在运行,所以这很好
现在,当用户输入/logon/squaredroute
时,MVC当然会抛出一个错误,因为我的logoncontroller
中没有squaredroute
操作
使用global.asax.cs
中的catch-all异常处理程序,我无法找到路由错误(我称之为路由错误)和另一个错误(在代码的其余部分抛出)之间的区别
我想区分错误的类型,因为当路由给出错误时,大部分时间是404错误,我想将用户重定向到404页面,而不是普通的、通用的错误页面
一个解决方案是为所有页面创建所有路由,取消现有的默认路由,并实现一个全面路由,但我不希望为每个url创建单独的路由
还有其他方法吗?测试你抓到的是不是一个,如果是,用上面的方法看看是不是404。测试你抓到的是不是一个,如果是,用上面的方法看看是不是404。谢谢Darin,这很有效!在实现这一点之前,有一个相关的问题:您认为更好的解决方案是什么:对每个页面硬编码100条路由,一条catch-all路由重定向到404页面,或者在错误处理程序中硬编码1条“generic”路由和catch-all“error”url?后者的“问题”是,当应用程序充斥着错误的URL时,应用程序将抛出大量异常(正如我一直读到的那样昂贵)........................从时间/可维护性的角度来看,“每个页面100条硬编码路由”听起来很昂贵。谢谢Darin,这是可行的!在实现这一点之前,有一个相关的问题:您认为更好的解决方案是什么:对每个页面硬编码100条路由,一条catch-all路由重定向到404页面,或者在错误处理程序中硬编码1条“generic”路由和catch-all“error”url?后者的“问题”是,当应用程序充斥着错误的URL时,应用程序将抛出大量异常(正如我经常读到的那样昂贵)…“每个页面硬编码100条路由”从时间/可维护性的角度来说听起来很昂贵。