客户端的作用就是捕获未处理异常, 发送异常到服务端。 关于捕获未处理异常的方法参考 http://www.cnblogs.com/youring2/archive/2012/04/25/2469974.html http://www.cnblogs.com/eaglet/archive/2009/02/17/1392191.html 这两篇博客。
总结下来对于web程序来说, 捕获未处理异常有两种方式:
1. 定义一个HttpModule, 在这个module的context_Error方法中来捕获未处理的异常。
2. 在Global.asax中有一个Application_Error的方法, 当程序发生未处理异常的时候, 会调用这个方法。
对于以上两种方式, 以上两篇博客也做了对比, 对异常的捕获, HttpModule会优于Global,同时从编程的角度来说, 如果使用Global, 那就意味着代码侵入。 所以最后决定采用了HttpModule的方式。
public class ErrorLogModule : IHttpModule { #region IHttpModule Members public void Dispose() { } public void Init(HttpApplication context) { context.Error += context_Error; } #endregion private void context_Error(object sender, EventArgs e) { HttpApplication application = (HttpApplication) sender; ClientErrorEntity errorMessage = new ClientErrorEntity(application.Server.GetLastError().GetBaseException(), application.Context); SendErrorEntity.SendError(errorMessage); } }