在Asp.Net的Global.asax中Application_Error跳转到自定义错误页无效的解决办法
在开发Asp.Net系统的时候,我们很多时候希望系统发生错误后能够跳转到一个自定义的错误页面,于是我们经常会在Global.asax中的Application_Error方法中使用Response.Redirect方法跳转到自定义错误页,但有时候(特别是当站点部署到IIS后)Application_Error方法中使用Response.Redirect方法会失效,当Asp.Net发生异常错误后还是显示出来的是Asp.Net的默认错误黄页。其根本原因是尽管我们在Application_Error方法中使用了Response.Redirect方法,但是当系统发生异常错误后Asp.Net认为异常并没有被处理,所以Asp.Net不会跳转到Application_Error方法中Response.Redirect指向的页面,还是会最终会跳转到Asp.Net的默认错误黄页。解决这个问题的办法很简单就是在Application_Error方法中使用Response.Redirect做跳转前,先调用Server.ClearError()方法告诉Asp.Net系统发生的异常错误已经被处理了,这样再调用Response.Redirect方法系统就会跳转到自定义错误页面了。
下面是一段示例代码:
using System;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Http; namespace RedirectToErrorPage
{
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
} //尽管我们在Global.asax的Application_Error方法中使用了Response.Redirect方法做页面重定向,但是当系统发生错误时Asp.Net认为错误没有被处理,所以最后页面还是会被重定向到Asp.Net的默认错误黄页,而不会跳转到我们在Application_Error方法中用Response.Redirect指向的页面。
protected void Application_Error(object sender, EventArgs e)
{
Server.ClearError();//在Global.asax中调用Server.ClearError方法相当于是告诉Asp.Net系统抛出的异常已经被处理过了,不需要系统跳转到Asp.Net的错误黄页了。如果想在Global.asax外调用ClearError方法可以使用HttpContext.Current.ApplicationInstance.Server.ClearError()。
Response.Redirect("~/ErrorPage.html", true);//调用Server.ClearError方法后再调用Response.Redirect就可以成功跳转到自定义错误页面了
}
}
在Asp.Net的Global.asax中Application_Error跳转到自定义错误页无效的解决办法的更多相关文章
- 关于在 ASP.NET 的 Global.asax 中 Application_Error 方法内,设置跳转到自定义错误页无效的问题
转自:https://www.cnblogs.com/OpenCoder/p/5070645.html 在 Global.asax 中的 Application_Error 方法中,使用 Respon ...
- ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
在ASP.NET MVC中,通过应用程序生命周期中的Application_Error事件可以捕获到网站引发的所有未处理异常.本文作为学习笔记,记录了使用Global.asax文件的Applicati ...
- 在Global.asax中 注册Application_Error事件 捕获全局异常
参考于:https://shiyousan.com/post/635813858052755170 在ASP.NET MVC中,通过应用程序生命周期中的Application_Error事件可以捕获到 ...
- 在ASP.Net MVC 中,如何在Global.asax中配置一个指向Area内部的默认Route
ASP.Net MVC 中配置Route的时候可以设置一个默认的Route. 比如我要在输入http://localhost的时候默认进入http://localhost/home/index.可以在 ...
- 【转】asp.net 利用Global.asax 捕获整个解决方案中的异常错误
之前做项目的时候都是在每个页面中处理这不同的异常信息,一个页面数下来,很多个try{}catch{}语句块,令整个代码结构有些不够美观. 今天看到一篇帖子,是关于利用全局应用程序类来帮忙获取异常信息, ...
- asp.net(C#)网站发布后 Global.asax 里 Application_Error 不执行的问题
现象 在 Global.asax 用 Application_Error 捕捉了http的404,500等错误,在本机测试正常,发布后无效,几经周折终于解决了... 程序是这样设计的 Applicat ...
- Asp.net MVC Global.asax文件
global.asax文件概述 global.asax这个文件包含全局应用程序事件的事件处理程序.它响应应用程序级别和会话级别事件的代码. 运行时, Global.asax 将被编译成一个动态生成的 ...
- Global.asax 中校验Session
Application 相关的 Application_Init:在每一个HttpApplication实例初始化的时候执行. Application_Disposed:在每一个HttpApplica ...
- asp.net mvc global.asax文件详解
一.文件概述 global.asax这个文件包含全局应用程序事件的事件处理程序.它响应应用程序级别和会话级别事件的代码. 运行时, Global.asax 将被编译成一个动态生成的 .NET Fram ...
随机推荐
- [LeetCode]题解(python):100 Same Tree
题目来源 https://leetcode.com/problems/same-tree/ Given two binary trees, write a function to check if t ...
- JSON.stringify实例应用—将对象转换成JSON类型进行AJAX异步传值
在上一篇中,对JSON.stringify()方法有了初步的认识,并且做了一些简单的例子.本篇将进一步将JSON.stringify用在复杂些的实例中,例如如下需求: 在进jQuery AJAX异步传 ...
- mybatis的xlm的sql
<sqlMap namespace="egis.scms.order"> <typeAlias alias="ScmsOrderDTO" ...
- 用MFC时,如果程序崩溃,检查内存,然后注意GDI数量,在任务管理器里选项-查看列-GDI数量
用MFC时,如果程序崩溃,检查内存,然后注意GDI数量,在任务管理器里选项-查看列-GDI数量
- attr属性
1.切换图片 $(".tip").hover( function () { $(this).attr("src"," ...
- DBCC TRACEON/TRACEOFF/TRACESTATUS
1. enable trace DBCC TRACEON ( trace# [ ,...n ][ , -1 ] ) [ WITH NO_INFOMSGS ] trace# Is the number ...
- Android -- Looper.prepare()和Looper.loop() —深入版
Android中的Looper类,是用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理.handler其实可以看做是一个工具类,用来向消息队列中插入消息的. (1) Loope ...
- C# Albert工程阅读关键字解析
// 摘要: // 为强类型集合提供 abstract 基类. [Serializable] [ComVisible(true)] public abstract class CollectionBa ...
- Java遇见HTML——JSP篇之JavaBeans
一.JavaBean简介及设计原则 设计原则:公有类.无参的公有构造方法.属性私有.有getter and setter方法 实例: 二.Jsp动作元素 JSP动作标签分为五大类: 三.在JSP页面中 ...
- RANSAC随机一致性采样算法学习体会
The RANSAC algorithm is a learning technique to estimate parameters of a model by random sampling of ...