我如何在ASP.NET MVC中使用Application_Error?
发布时间:2020-12-15 22:42:33 所属栏目:asp.Net 来源:网络整理
导读:我想使用Application_Error与我的MVC项目,但我不能让它上班.我将以下内容添加到我的Global.asax文件中: protected void Application_Error(object sender,EventArgs e) { Exception objErr = Server.GetLastError().GetBaseException(); Session["Test"] =
我想使用Application_Error与我的MVC项目,但我不能让它上班.我将以下内容添加到我的Global.asax文件中:
protected void Application_Error(object sender,EventArgs e) { Exception objErr = Server.GetLastError().GetBaseException(); Session["Test"] = "Message:" + objErr.Message.ToString(); } (会话仅用于测试,如果我得到这个工作,我将使用数据库记录错误.) public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; throw (new Exception()); return View(); } 在我的Webconfig文件中,我设置了一个defaulterror页面,但它不会重定向到视图: <customErrors defaultRedirect="Home/Error"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> 解决方法
所以首先要记住,全局错误处理应该是最后的手段,控制器类对错误有一个特定的错误方法;
protected virtual bool OnError(string actionName,System.Reflection.MethodInfo methodInfo,Exception exception) 在此您可以重定向到标准共享错误视图; protected override bool OnError(string actionName,Exception exception) { RenderView("Error",exception); return false; } 您在全局应用程序错误中遇到的问题是它没有视图或控制器的概念,因此如果要在其中重定向,则必须使用已知的URL protected void Application_Error(object sender,EventArgs e) { Exception exception = Server.GetLastError(); System.Diagnostics.Debug.WriteLine(exception); Response.Redirect("/Home/Error"); } 但你不需要这样做.如果您在web.config中设置默认错误页面,则不需要重定向 <customErrors defaultRedirect="Home/Error" /> 但是,除非您向Home控制器添加了不存在的错误视图,否则将以下内容添加到主控制器 public ActionResult Error() { return View(); } 然后(如果你是明智的),你可以将错误处理代码放在Error()方法中,因为所有未处理的错误都将结束. public ActionResult Error() { Exception exception = Server.GetLastError(); System.Diagnostics.Debug.WriteLine(exception); return View(); } 最后记住,如果您连接到localhost,默认情况下不会看到自定义错误!所以你需要改变这种行为 <customErrors mode="On" defaultRedirect="/Home/Error" /> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – Visual Studio找不到自定义工具RazorGenera
- asp.net – 带有nginx或apache的Mono 2.11
- asp.net-mvc-4 – 从.net 4升级到4.5会破坏Javascript中的H
- asp.net-core-mvc – MVC 6配置验证
- asp.net-mvc-3 – MVC 3 knockoutjs:在使用EditorFor作为布
- asp.net – 如何使用foreach循环清除所有文本框?
- asp.net – 如何在MVC 4中查询当前登录用户的AD信息
- C# 超高速高性能写日志 代码开源
- asp.net-mvc-3 – 登录后重定向MVC3
- asp.net-mvc – ASP.NET MVC – 构建URL或链接的HTML扩展方
推荐文章
站长推荐
- asp.net – ‘InitializeCulture’不是其成员
- 如何在Azure中部署和托管.NET Core自托管控制台应
- 如何在ASP.NET中本地化App_GlobalResources?
- asp.net-mvc-3 – 尝试检索不存在的列的实体框架
- asp.net – 在自己的AppPool中运行每个网站有哪些
- asp.net-mvc – 发送asp.net mvc动作结果里面的电
- asp.net-mvc – 哪一层应该构建一个View Model?
- 使用带有自定义角色提供程序的asp.net mvc 4登录
- asp.net-identity – IIdentity.Name与IIdentity
- ASP.NET MVC 3数据注释大于下载日期时间和int
热点阅读