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)中运行,原因后面会说明: 为什么我们可以删除对象的 ...
随机推荐
- '/test.txt'; // 把抓取的代码写入该文件
将获得的代码直接写入某个文件 代码如下:<?php $urls = array( 'http://www.sina.com.cn/', 'http://www.sohu.com/', 'ht ...
- IOS第16天(2,Quartz2D下载进度条)
*************自定义下载的view的方法 #import "HMProgressView.h" @interface HMProgressView() @propert ...
- Windows内核 基本汇编指令
1)用VS2010新建Win32 Console Application,工程名为ACECore,工程建立完成后得到打开文件ACECore.cpp,代码如下: #include "stdaf ...
- Python脚本模拟登录网页之GitHub篇
1. 通过Firefox配合插件Tamper Date获取登录时客户端向服务器端提交的数据, 并且发现authenticity_token这个字段每次登录时都不一样. POSTDATA=commit= ...
- GDC2016 [全境封锁],11个种类5个派系的敌人设计思路
[汤姆克兰西:全境封锁],11个种类5个派系的敌人设计思路 实现[汤姆克兰西]射击RPG的AI开发 日文链接:http://game.watch.impress.co.jp/docs/news/2 ...
- sublime问题汇总
1.sunlime光标不跟随 解决方法:安装插件IMESupport 利用package control安装,步骤: 第一步 第二步
- P1026 统计单词个数
题意 给出一段字符串和一个字典,把字符串划分为n个连续的子串,求一种最优的划分方式使字符串所含单词数最大.(详见NOIp2001) 思路 这个题是一个很典型的线性dp,难点主要在预处理上. 理解题意后 ...
- CentOS下搭建nginx+php环境
一.下载安装nginx 参见 http://www.cnblogs.com/kreo/p/4378086.html 不再赘述 二.下载php #下载 wget http://bg2.php.net/d ...
- Bugzilla说明
简介 Bugzilla是Mozilla公司向我们提供的一个开源的免费缺陷跟踪工具.作为一个产品缺陷的记录及跟踪工具,它能够为你建立一个完善的Bug跟踪体系,包括报告Bug.查询Bug记录并产生报表.处 ...
- [译]JavaScript规范-葵花宝典
[译]JavaScript规范 译自:https://github.com/airbnb/javascript 类型 原始值: 相当于传值 string number boolean null und ...