gpt4 book ai didi

c# - global.asax 重定向器不工作

转载 作者:行者123 更新时间:2023-11-30 15:01:11 28 4
gpt4 key购买 nike

我想在我的 global.asax 中使用带有 response.redirecttoroute 的自定义路由,但它不起作用。我的 RouteConfig 中有以下内容:

routes.MapRoute(
name: "Error",
url: "Error/{action}/{excep}",
defaults: new { action = "Index", excep = UrlParameter.Optional }
);

在我的 global.asax 中,我执行以下操作:

Response.RedirectToRoute("Error", new { action="Index", excep=ex.Message });

在我的 ErrorController 中我有:

public ActionResult Index(string excep)
{
ViewBag.Exception = excep;

return View();
}

在我的错误索引 View 中,我调用 ViewBag.Exception 来显示异常。

当我使用时:

Response.Redirect("/Error/Index/0/"+ex.Message, true);

并在我的 Controller 中使用它:

public ActionResult Index(int? id,string excep)
{
ViewBag.Exception = excep;

return View();
}

它有效,但这是默认路由,不是我想要的。为什么它适用于重定向而不适用于 redirectoroute?

最佳答案

我遇到了同样的问题,但现在我找到了解决方案。也许你可以试试这个:只需根据需要重命名类名或变量名。请注意,在更改 Global.asax 中的任何内容后,请清除浏览器缓存。希望这会有所帮助。

Global.asax

  public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//Make sure this route is the first one to be added
routes.MapRoute(
"ErrorHandler",
"ErrorHandler/{action}/{errMsg}",
new { controller = "ErrorHandler", action = "Index", errMsg=UrlParameter.Optional}
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

}

一旦发生未处理的异常,将响应从您的 Global.asax Application_Error 事件重定向到您的错误处理程序

 protected void Application_Error(object sender, EventArgs e)
{
var errMsg = Server.GetLastError().Message;
if (string.IsNullOrWhiteSpace(errMsg)) return;
//Make sure parameter names to be passed is are not equal
Response.RedirectToRoute("ErrorHandler", new { strErrMsg=errMsg });
this.Context.ClearError();
}

错误处理 Controller

public class ErrorHandlerController : Controller
{

public ActionResult Index(string strErrMsg)
{
ViewBag.Exception = strErrMsg;
return View();
}

}

要在 HomeController 的 Index ActionResult 上测试错误处理程序,请添加此代码。

public class HomeController : Controller
{
public ActionResult Index()
{
//just intentionally add this code so that exception will occur
int.Parse("test");
return View();
}
}

输出将是

enter image description here

关于c# - global.asax 重定向器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14621492/

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