联合会员
周边
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
81
简单就是美!
博客园
首页
新随笔
联系
订阅
管理
随笔 - 458
文章 - 1
评论 - 420
阅读 -
34万
asp.net错误处理封装
asp.net错误封装
/**/
/*
----------------------------------------------------------------
* Copyright (C)
* 版权所有。
*
* 文件名 :ErrorManager.cs
* 功能描述:asp.net中统一的错误修理,与本类相配套需要增加一个错误信息显示页面,如error.aspx
*
* 使用说明:1. 在Application_Start()中启动定时器(定时清空错误信息):ErrorManager.Instance.Start(),
* 默认12小时运行一次,或用ErrorManager.Instance.SetTimerInterval()设置。
* 2. 在Application_Error()中,当发生错误时,保存这个错误信息并转到error.aspx中显示这个错误
* string key = ErrorManager.Instance.AddError();
* Response.Redirect("error.aspx?key=" + key);
* 3. 在error.aspx中通过url传来的key,取得并显示错误信息:
* string err = ErrorManager.Instance.GetError(key)
* err中前19个字符是错误发生的时间,后面是错误信息。
* 4. 为了捕捉Session超时的错误,而不是返回Session[key]是null的错误信息,本类增加了GetSession()
* 和SetSession函数来统一管理Session,以后aspx中不能直接读取Session,而必须通过本类来读取。
*
*
* 创建标识:
*
* 修改标识:
* 修改描述:
*
* 修改标识:
* 修改描述:
*----------------------------------------------------------------
*/
using
System;
using
System.Data;
using
System.Configuration;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.Collections;
/**/
///
<summary>
///
Summary description for Error
///
</summary>
public
class
ErrorManager
{
private
System.Timers.Timer m_timer;
private
Hashtable m_htErr;
/**/
///
<summary>
///
私有的构造函数
///
</summary>
private
ErrorManager()
{
this
.m_timer
=
new
System.Timers.Timer();
this
.m_timer.Enabled
=
false
;
this
.m_timer.Interval
=
12
*
60
*
60
*
1000
;
//
默认12个小时执行一次
this
.m_timer.Elapsed
+=
new
System.Timers.ElapsedEventHandler(m_timer_Elapsed);
this
.m_htErr
=
new
Hashtable();
}
/**/
///
<summary>
///
单例模式的接口
///
</summary>
public
static
readonly
ErrorManager Instance
=
new
ErrorManager();
/**/
///
<summary>
///
设置定时器的频率,单位是毫秒
///
</summary>
///
<param name="Interval">
毫秒
</param>
public
void
SetTimerInterval(
int
Interval)
{
this
.m_timer.Interval
=
Interval;
}
/**/
///
<summary>
///
定时器开始
///
</summary>
public
void
TimerStart()
{
this
.m_timer.Enabled
=
true
;
}
/**/
///
<summary>
///
定时器结束
///
</summary>
public
void
TimerStop()
{
this
.m_timer.Enabled
=
false
;
}
/**/
///
<summary>
///
发生了一个错误,把错误信息保存起来,并返回错误的id,便于页面中读取
///
</summary>
///
<returns>
返回错误的id
</returns>
public
string
AddError()
{
string
key
=
Guid.NewGuid().ToString();
string
msg
=
System.DateTime.Now.ToString(
"
yyyy-MM-dd HH:mm:ss
"
)
+
HttpContext.Current.Server.GetLastError().GetBaseException().Message;
this
.m_htErr.Add(key, msg);
HttpContext.Current.Server.ClearError();
return
key;
}
/**/
///
<summary>
///
返回指定Key的错误信息,前19个字符是错误发生的时间
///
</summary>
///
<param name="key">
key,是一个guid
</param>
///
<returns>
返回错误信息
</returns>
public
string
GetError(
string
key)
{
return
this
.m_htErr[key].ToString();
}
/**/
///
<summary>
///
定时在Hashtable中清理错误信息
///
</summary>
///
<param name="sender"></param>
///
<param name="e"></param>
private
void
m_timer_Elapsed(
object
sender, System.Timers.ElapsedEventArgs e)
{
ArrayList list
=
new
ArrayList();
lock
(
this
.m_htErr)
{
DateTime now
=
DateTime.Now;
TimeSpan ts;
foreach
(
string
key
in
this
.m_htErr.Keys)
{
//
前19个字符是错误发生的日期,yyyy-MM-dd HH:mm:ss
string
time
=
this
.m_htErr[key].ToString().Substring(
0
,
19
);
ts
=
now
-
Convert.ToDateTime(time);
if
(ts.TotalMinutes
>
20
)
//
把20分钟前的错误信息从hashtable中清除
list.Add(key);
}
foreach
(
string
key
in
list)
{
this
.m_htErr.Remove(key);
}
}
}
Session操作的封装
#region
Session操作的封装
/**/
///
<summary>
///
取得指定键值的Session
///
</summary>
///
<param name="key">
键值
</param>
///
<returns>
键内容值
</returns>
public
object
GetSession(
string
key)
{
object
val
=
HttpContext.Current.Session[key];
if
(val
==
null
)
throw
new
Exception(
"
页面超时,请重新登录。
"
);
return
val;
}
/**/
///
<summary>
///
设置Session
///
</summary>
///
<param name="key">
键值
</param>
///
<param name="val">
键内容
</param>
public
void
SetSession(
string
key,
object
val)
{
HttpContext.Current.Session[key]
=
val;
}
#endregion
}
好文要顶
关注我
收藏该文
微信分享
81
粉丝 -
25
关注 -
27
+加关注
0
0
升级成为会员
«
上一篇:
C#减少图片文件大小和尺寸
»
下一篇:
oracle取得系统时钟
posted @
2006-08-16 10:02
81
阅读(
883
) 评论(
1
)
编辑
收藏
举报
刷新页面
返回顶部
登录后才能查看或发表评论,立即
登录
或者
逛逛
博客园首页
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
编辑推荐:
·
Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
·
开发者必知的日志记录最佳实践
·
SQL Server 2025 AI相关能力初探
·
Linux系列:如何用 C#调用 C方法造成内存泄露
·
AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
·
被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
·
【自荐】一款简洁、开源的在线白板工具 Drawnix
·
没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
·
园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
·
无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
公告
昵称:
81
园龄:
20年4个月
粉丝:
25
关注:
27
+加关注
<
2006年8月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
磁带转mp3
(1)
磁带转录mp3
(1)
积分与排名
积分 - 280553
排名 - 3686
随笔分类
C++Builder(13)
dotNet(83)
Emgu CV,OpenCV学习(4)
Firebird(15)
FreeBSD+PostgreSQL(15)
JavaScript(3)
Ms SQL Server(17)
mysql(13)
Oracle(9)
rabbitMQ(1)
Redis(1)
TDengine(6)
视频(1)
信创(21)
杂七杂八(103)
随笔档案
2025年1月(1)
2024年12月(2)
2024年11月(4)
2024年10月(3)
2024年9月(2)
2024年8月(5)
2024年7月(7)
2024年6月(2)
2024年4月(3)
2024年3月(7)
2024年2月(2)
2024年1月(4)
2023年12月(7)
2023年11月(5)
2023年10月(9)
2023年9月(4)
2023年8月(1)
2023年7月(4)
2023年6月(7)
2023年5月(4)
2023年4月(5)
2023年3月(1)
2023年2月(3)
2023年1月(5)
2022年12月(1)
2022年11月(2)
2022年10月(3)
2022年9月(5)
2022年8月(12)
2022年7月(16)
2022年6月(3)
2022年5月(6)
2022年4月(12)
2022年3月(3)
2022年1月(1)
2021年12月(1)
2021年11月(2)
2021年10月(1)
2021年9月(3)
2021年8月(6)
2021年7月(2)
2021年6月(4)
2021年5月(1)
2021年4月(1)
2021年3月(1)
2021年2月(1)
2020年12月(2)
2020年11月(3)
2020年9月(2)
2020年8月(4)
2020年7月(2)
2020年6月(2)
2020年5月(3)
2020年4月(6)
2020年3月(1)
2020年1月(3)
2019年12月(2)
2019年11月(2)
2019年10月(5)
2019年9月(2)
2019年8月(1)
2019年6月(1)
2019年5月(1)
2019年4月(1)
2019年2月(1)
2018年12月(4)
2018年11月(5)
2018年10月(3)
2018年9月(5)
2018年8月(5)
2018年7月(3)
2018年6月(1)
2018年5月(2)
2018年3月(2)
2017年12月(1)
2017年11月(2)
2017年10月(2)
2017年9月(1)
2017年8月(3)
2017年5月(2)
2017年1月(2)
2016年9月(1)
2016年1月(1)
2015年3月(1)
2014年7月(2)
2014年4月(2)
2014年3月(1)
2014年1月(1)
2013年12月(2)
2013年10月(1)
2013年9月(1)
2013年8月(2)
2013年6月(3)
2013年5月(2)
2013年4月(6)
2013年3月(12)
2013年2月(3)
2013年1月(3)
2012年12月(2)
2012年11月(1)
2012年9月(1)
2012年8月(2)
2012年6月(1)
2012年3月(1)
2012年2月(2)
2012年1月(3)
2011年12月(7)
2011年11月(1)
2011年9月(1)
2011年7月(1)
2011年6月(1)
2011年4月(5)
2011年3月(5)
2011年2月(9)
2011年1月(3)
2010年12月(2)
2010年6月(3)
2010年5月(2)
2010年3月(4)
2010年2月(1)
2010年1月(2)
2009年12月(8)
2009年11月(3)
2009年10月(3)
2009年9月(2)
2009年8月(4)
2009年7月(11)
2009年6月(5)
2009年1月(1)
2008年12月(4)
2008年11月(1)
2008年9月(1)
2007年12月(1)
2007年6月(2)
2007年5月(2)
2007年4月(4)
2007年3月(3)
2007年1月(2)
2006年12月(1)
2006年11月(2)
2006年10月(1)
2006年8月(3)
2006年6月(1)
2006年5月(3)
2006年4月(1)
2006年3月(2)
2006年1月(2)
2005年9月(3)
2005年8月(2)
2005年7月(1)
2005年2月(2)
2004年11月(2)
更多
文章档案
2011年4月(1)
阅读排行榜
1. Python中的数组(16997)
2. 磁带转录mp3简易方法 一键完成(14023)
3. IIS7 应用程序池回收(12547)
4. PostgreSQL、MsSQL、Oracle简单性能比较(9592)
5. 中国象棋和国际象棋的区别(8201)
评论排行榜
1. 不喜欢数据库编程(80)
2. 使用开源操作系统及数据库系统的可行性分析(27)
3. C# 2.0与泛型(19)
4. 马的遍历(14)
5. 分享一个完整的SAP RFC调用接口封装(11)
推荐排行榜
1. Mutex对象是操作系统级?(3)
2. 转:在Linux上运行WinForm(1)
3. mssql版本对应的版本号(1)
4. WebView2替代WebBroswer(1)
5. 关于取硬盘序列号(1)
最新评论
1. Re:关于取硬盘序列号
命令行工具:wmic diskdrive get model, name, serialnumber
也可得到正确结果
--81
2. Re:Windows10升企业版
上面的key好像都失效了
--81
3. Re:魔方会还原六面了
@little_fat_sheep 【Unity3D】魔方 这个u3d挺好,以前有胡波的java魔方模拟器,非常好...
--81
4. Re:魔方会还原六面了
【Unity3D】魔方
--little_fat_sheep
5. Re:银河麒麟服务器V10
请教个问题,.net6或.net7,在aarch64机器上安装(无网),我用安装包是dotnet-runtime-7.0.0-linux-arm64.tar.gz 然后运行dotnet --info报...
--0611163
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本