我如何在ASP.NET MVC中使用Application_Error?
|
我想使用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-3 – 使用connectionStringName进行数据库日志
- asp.net-mvc – DropDown列表onchange事件和MVC中的AJAX
- IIS 7.5中未显示任何ASP.NET功能
- 在ASP.Net应用程序中执行Server.MapPath的最有效的方法是什
- asp.net-web-api2 – ASP.NET 5(vNext)/ Web API / OAuth /
- asp.net-mvc – 在asp.net MVC中排序表
- asp.net-ajax – ASP.Net AJAX UpdatePanel无法触发Selecte
- asp.net – 如何在没有文件扩展名的情况下制作ASPX网页?
- asp.net-core – JsonConvert DataSet .NET Core 2.0无效
- asp.net – 在VS2008发布网站后,全球资源无法解决
- asp.net-mvc – 如何使用启用了延迟加载的Automa
- asp.net-core – 在Visual Studio CTP2中的ASP.V
- asp.net-mvc-3 – ASP.NET MVC重定向到没有物理重
- ASP.net会话请求排队
- asp.net-mvc-3 – 如何在Razor中创建一个else if
- asp.net-mvc – 在DropDownList ASP.NET MVC中获
- asp.net – 手动更新表单认证券:
- asp.net-mvc – ASP.NET MVC 5为隐藏输入渲染不同
- asp.net-mvc – Asp.Net MVC 2 Label自定义文本
- 关闭一个子目录的ASP.Net WebForms身份验证
