这篇文章不能算是Enterprise Library 2.0的一个技巧,只是Logging Application Block的一个简单应用而已,在这里我们使用Logging Application Block来记录一个ASP.NET 2.0站点中未处理的异常到数据库中,当然你也可以记录到文本文件中,或者发送到指定的Email中,下面看一下具体的实现步骤。
1.创建数据库表和存储过程
在安装目录的src\Logging\TraceListeners\Database\Scripts文件夹下,执行CreateLoggingDb.cmd,注意在这之前要先把LoggingDatabase.sql另存为Unicode格式(参见技巧2)。安装完成后将会创建一个Logging的数据库,其中会有三张数据表和四个相关的存储过程。
2.新建Web站点并进行配置
新建一个Web站点后,添加Web.config文件,并用EntLibConfig.exe打开,新建Logging Application Block后,再新建Database Trace Listener:

设置Database Trace Listener的各项参数,包括存储过程名,同时还依赖于DAAB:
3.捕获并记录ASP.NET异常
首先需要添加如下引用:
Microsoft.Practices.EnterpriseLibrary.Logging.dll

Microsoft.Practices.EnterpriseLibrary.Logging.Database.dll

Microsoft.Practices.EnterpriseLibrary.Data.dll
为Web站点添加Global.asax文件,并且在Application_Error编写如下代码,这样在有异常发生时应用程序块会把异常信息记录到数据库中:
<%@ Application Language="C#" %>
<%@ Import Namespace="Microsoft.Practices.EnterpriseLibrary.Logging" %>
<script runat="server">
    void Application_Error(object sender, EventArgs e)
    {
        // Code that runs when an unhandled error occurs
        Exception ex = Server.GetLastError().GetBaseException();
        LogEntry log = new LogEntry();
        log.Message = ex.Message +
                        "\r\nSOURCE: " + ex.Source +
                        "\r\nFORM: " + Request.Form.ToString() +
                        "\r\nQUERYSTRING: " + Request.QueryString.ToString() +
                        "\r\nTARGETSITE: " + ex.TargetSite +
                        "\r\nSTACKTRACE: " + ex.StackTrace;
        Logger.Write(log);
    }
</script>
4.创建一个未处理的异常

在Default.aspx.cs的Page_Load事件中制造一个异常信息
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        int error = Int32.Parse("bbbbb");
    }
}
运行程序后,可以看到数据库表中会多出一条记录:
其中Message的内容:
Input string was not in a correct format.

SOURCE: mscorlib

FORM: 

QUERYSTRING: 

TARGETSITE: Void StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo, Boolean)

STACKTRACE:    at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)

   at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)

   at System.Int32.Parse(String s)

   at _Default.Page_Load(Object sender, EventArgs e) in c:\Inetpub\wwwroot\EntLibDemo2\Default.aspx.cs:line 15

   at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)

   at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)

   at System.Web.UI.Control.OnLoad(EventArgs e)

   at System.Web.UI.Control.LoadRecursive()

   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
这样我们就实现了用Logging Application Block对未处理异常信息的记录,如果要记录到文本文件或者发送Email,只需要在第2步新建Flat File Trace Listener或者Email Trace Listener,使用文本文件时要注意设置文件夹的权限。
本文转自lihuijun51CTO博客,原文链接: http://blog.51cto.com/terrylee/67627,如需转载请自行联系原作者

Enterprise Library 2.0 技巧(3):记录ASP.NET站点中未处理的异常相关推荐

  1. Enterprise Library 2.0 技巧(4):如何用编程的方法来配置Logging Application Block

    在本系列的技巧(1)和技巧(2)中分别介绍了使用外部配置文件,使用数据库记录配置信息两种方法,不知道大家有没有想过不使用任何配置文件,也不使用数据库而直接用编程的方法来实现呢?本文将会展示如何使用编程 ...

  2. Enterprise Library 2.0 技巧(1):如何使用外部配置文件

    摘要:我们知道在Enterprise Library1.1中对于每一个应用程序块都有一个对应的配置文件,而在Enterprise Library2.0中却把所有的配置信息都放在了应用程序配置文件(Ap ...

  3. Enterprise Library 3.0 体验(3):使用配置文件的Validation Application Block

    摘要:Enterprise Library 3.0 January 2007 CTP版发布了,这次发布的版对于Validation Application Block有了很大的改进,包括对配置工具的支 ...

  4. Enterprise Library 3.0 安装过程

    微软刚刚发布Enterprise Library 3.0,其更新程度非常大,功能非常强大.  3.0的安装过程却非常复杂,下面是安装过程记录,希望对应用Entlib3.0的人有所借鉴. 相关的介绍资源 ...

  5. Enterprise Library 2.0 -- Caching Application Block

    开始写Enterprise Library 2.0的学习体会,准备先把每个部分的入门部分写好,然后再继续深入的研究每一部分,希望能得到高手的指点和建议.今天写的是Enterprise Library ...

  6. Enterprise Library 5.0 开发向导- 简介(1)

    Enterprise Library 5.0 开发向导- 简介(1) 微软企业库 Enterprise Library 5.0 正式发布!!! 在基于微软.NET 框架开发的应用程序中,无论是企业级的 ...

  7. Enterprise Library 4.0

    微软发布了支持Visual Studio 2008的新版本Enterprise Library 4.0,同时也发布了他们的依赖注入容器Unity应用程序块的1.1版本. 模式与实践团队的产品经理Gri ...

  8. Enterprise Library v5.0 -- Data Access Application Block 开发向导(3)

    微软企业库 Enterprise Library 5.0 正式发布!!! Enterprise Library 5.0 开发向导- 简介(1) Enterprise Library v5.0 -- D ...

  9. Enterprise Library 3.0 发布

    微软今天发布了Enterprise Library 3.0,又有新的东西可以研究了,在Enterprise Library 3.0中包含如下8个应用程序块: l         Caching App ...

最新文章

  1. 基于人工智能方法的手写数字图像识别_【工程分析】基于ResNet的手写数字识别...
  2. MSN8.0经常出现连接错误,如何解决?
  3. 陆志勤:记交大数学系二三事
  4. ext store 数据修改_extjs 之Ext.data.Store变更单行记录值【修改】
  5. 创建生成级联上级字符的函数
  6. Windows Server 2012 2R服务器版本域控制器的安装及域环境的搭建(内有镜像下载)...
  7. 数据原理——1、ChIP-seq
  8. 【内存模型和名称空间】——C++ Prime Plus CH9
  9. Windows: 定制多用户多Registry键脚本
  10. Seckill学习笔记——Day3(秒杀功能实现)
  11. 如何使用python实现翻转英文句子的单词顺序
  12. css3书页卷角使用教程,css - 这个卷角的效果怎么做?
  13. kubernetes 实用 api list
  14. vue.js动态计时器_基于Vue.js的Pomodoro技术计时器
  15. 创建二叉树并计算结点数
  16. ChatGPT火了,对话式人工智能还能干嘛?
  17. 易启秀20150629完整包微场景制作源码,新增1.4G素材包,全新后台UI设计+采集
  18. 全球及中国动力电池行业研发方向与未来发展走势研究报告2022版
  19. LeetCode——69 x的平方根
  20. java虚拟机内部原理分析

热门文章

  1. [原创]WildPackets Omnipeek介绍
  2. HanLP-最短路径分词
  3. React组件通信技巧
  4. [APUE]文件和目录(中)
  5. iOS网络开发(8)文件下载的实现
  6. WINCE平台下C#应用程序中使用看门狗
  7. 【开源】分享一个前后端分离方案-前端angularjs+requirejs+dhtmlx 后端asp.net webapi
  8. ECshop在文章列表页调用文章简介
  9. 多读多写多实践---给初学编程者的建议
  10. javascript的基础知识