我正在使用Home控制器,默认操作为登陆。
但是对于ErrorController,默认操作应该是索引
在Global.cs的RegisterRoutes方法中,我写的是这样的: -
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Landing", id = UrlParameter.Optional }
但是当我尝试从Application_Error事件重定向到错误时: -
Exception error = Server.GetLastError();
string redirectUrl = "~/Error/id=" + errorId;
HttpContext.Current.Server.ClearError();
HttpContext.Current.Response.Redirect(redirectUrl);
它正在抛出错误 - 找不到行动着陆。
答案 0 :(得分:2)
只需在当前路线上方添加另一条路线,以获取更具体的错误案例:
routes.MapRoute(
"Error", // Route name
"Error/{action}/{id}", // URL with parameters
new { action = "Index", id = UrlParameter.Optional }
此外,这看起来有点奇怪:
string redirectUrl = "~/Error/id=" + errorId;
似乎更像这样:
string redirectUrl = "~/Error?id=" + errorId;
答案 1 :(得分:0)
在另一个之前将它放在路由映射方法中,它将为错误控制器提供不同的默认操作。订单在这里非常重要,路线按照先到先得的原则进行匹配。
routes.MapRoute(
"Error", // Route name
"Error/{action}/{id}", // URL with parameters
new { controller = "Error", action = "index", id = UrlParameter.Optional }