C# Global Application_Error不执行
今天在开发过程中遇到一个很奇特的问题,就是 Global 文件中的Application_Error 方法不执行的问题,很是苦恼,查了有关这方面的问题,感觉网友们回答的都有点乱,有些人说 在编译时不需要这个文件,在项目部署的时候再放进去,有些人说Global.asax可能没被正常加载,session没有启用引起Application_Error内部出错,等等
最开始,我也以为是 Global.asax 文件没被加载,所以我在Application_Start 方法中设置断点,发现 是可以进入的,这就排除了加载失败的可能性,
后来我在测试过程中意外的发现在webform 页面的 的Load事件中 编写一段会抛出异常的代码,例如:(string str = "a" int.parse(str)),然后在Application_Error 中是可以进入的,这就奇怪了,难道Global文件只在WebForm页面中才有效?这应该不可能啊,
因为我们得项目用的是html 页面 后台使用的是ashx(一般处理程序)里面, 所以我就在想是不是异常要在 一般处理程序里面去处理,我们的一般处理程序结构如图:
我们在接受了请求后,响应之前是使用了try{}catch语句的,也就是捕获了异常,但是并没有处理异常,我就试了试加上throw ex;这句话在catch中,果然,问题解决了
解释一下红色框部分:原本关注Global 的Application_Error方法就是为了 给系统记录日志,红色框中代码就是给数据库中添加一条捕获的异常的日志信息,这里这部分可以写在Global 的Application_Error方法中,同时替换这部分为 throw ex;这句话
和我现在这样写的结果都可以满足我们项目的需求。
其实简单的结论就是:全局Global文件 的Application_Error 是在抛出异常的情况下才会执行的,也就是说,当出现异常时,你捕获了,但是不处理就不会进入该方法,反之继续往上抛出 最终会进入该方法!
C# Global Application_Error不执行的更多相关文章
- asp.net(C#)网站发布后 Global.asax 里 Application_Error 不执行的问题
现象 在 Global.asax 用 Application_Error 捕捉了http的404,500等错误,在本机测试正常,发布后无效,几经周折终于解决了... 程序是这样设计的 Applicat ...
- ASP.NET Global Application_Error事件中访问Session报错 解决
报错信息:会话状态在此上下文中不可用 protected void Application_Error(object sender, EventArgs e) { //以此判断是否可用Session ...
- ASP.NET MVC Application_Error 无效不执行
我们一般在开发 ASP.NET MVC 应用程序的时候,会在 Application_Error 中添加异常日志记录,一般会记录 500 的错误信息,但如果应用程序在出错的时候,Application ...
- Global.asax 文件说明
引用 来自 http://www.cnblogs.com/jianshao810/archive/2011/02/03/1948912.htm 在网上找了N多相关的东西总说的不够细,现在终于找到了. ...
- Global.asax 详解
在网上找了N多相关的东西总说的不够细,现在终于找到了.可以了解web.cofig和Global.asax之间的关系以及执行的顺序. 在Global.asax.cs文件中 protected void ...
- 一起学习MVC(2)Global.asax的学习
在Global.asax.cs文件中 protected void Application_BeginRequest(Object sender, EventArgs e) { ...
- Global.asax详解
在网上找了N多相关的东西总说的不够细,现在终于找到了.可以了解web.cofig和Global.asax之间的关系以及执行的顺序. 在Global.asax.cs文件中 protected void ...
- c# .net Global.asax文件的作用
1 Global.asax文件的作用 先看看MSDN的解释,Global.asax 文件(也称为 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 ASP.NET 或HTTP模块所引发的 ...
- JavaScript delete用法,属性,特性,执行上下文,激活对象 综合篇
一.问题的提出 我们先来看看下面几段代码,要注意的是,以下代码不要在浏览器的开发者工具(如FireBug.Chrome Developer tool)中运行,原因后面会说明: 为什么我们可以删除对象的 ...
随机推荐
- Ceph与OpenStack的Glance相结合
http://docs.ceph.com/docs/master/rbd/rbd-openstack/?highlight=nova#kilo 在Ceoh的admin-node上进行如下操作: 1. ...
- dedecms 使用
初看dedecms的后台界面就是一头雾水.不懂的词语多,什么模型,什么栏目,什么频道,不懂.相比于wordpress的分类category,标签tag,文章post,页面page而言,织梦后台难懂. ...
- react-native win7环境搭建
时间:2016-08-22 晚,西安 1.安装jdk java version "1.6.0_45"Java(TM) SE Runtime Environment (build 1 ...
- Android-Activity使用(2) -传值
一.简单传值 1.修改MainActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns ...
- cut用法
cut命令用来剪下文本文件里的数据,文本文件可以是字段类型或是字符类型. cut - remove sections from each line of files 语法 cut OPTION... ...
- Lua JSONRPC学习笔记
JSON RPC JSON RPC 为利用json数据格式来执行远程调用方式, 作用同xmlrpc,不过与xmlrpc相比, jsonrpc更加轻量,json更加节省数据量,更加可读性高. 官网网站: ...
- Oracle EBS R12 电子技术参考手册 - eTRM (电子文档)
http://etrm.oracle.com/pls/etrm/etrm_search.search
- IOS 谓词
// 谓词 Person *person = [[Person alloc]init]; person.name = @"zhang san"; person.age = 20; ...
- Adobe CS6 全系列官方下载地址 (迅雷无效) Win Mac
https://helpx.adobe.com/x-productkb/policy-pricing/cs6-product-downloads.html CS6 Design & Web P ...
- poj 1888 Crossword Answers 模拟题
Crossword Answers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 869 Accepted: 405 D ...