当网站 运行 出错时,不能将 原本的异常 信息 直接显示出来,这样很不友好,用户也看不懂;而且,异常信息会显示出调用堆栈,会影响网站的安全性。
2. 用户访问不存在的页面:
用户完全可以访问 根目录下不存在的页面。这个时候 就会出现异常。
例子: 360 首页,如果出现这种情况会重定向到 首页。而 新浪网会 出现一个 错误页面。
这都是比较好的 处理方法。
3. ASP.NET MVC 如何处理 用户访问不存在的页面:
我们可以在 web.config 里配置
不过这个页面只能放在 网站的根目录下。
我们可以 定义一个 控制器操作(或者是 网站的首页),当出现 异常时,就导航到这个操作。
4. 日志处理:
使用 上面的做法,我们基本可以处理所有的错误信息了。
可以在 以上的基础上加入 如下操作,进行日志记录:
1. 使用 Filter 标记属性,我们可以自定义 异常处理类(LogAttribute),派生自 FilterAttribute,IExceptionFilter ,然后 实现 OnException 方法,在 这个方法里面,将错误 信息 写入 数据库 或者 本地文件。在 FilterConfig 里注册这个 标记属性 后,就可以 标记 Controller 或 Action。
如:(这里只是简单演示)
string path = AppDomain.CurrentDomain.BaseDirectory + @"/Exception/Log.txt"; //也可以保存到数据库 StreamWriter writer = File.AppendText(path); writer.Write("\r\n" + filterContext.Exception.Source + ":" + filterContext.Exception.Message); writer.Close();
2. 使用 自定义 Controller, BaseController 派生自 Controller ,并重写 OnException 方法,在这个方法里面,将错误 信息 写入数据库 或者 本地文 件。以后要处理异常的类 就直接 派生自 BaseController 即可。
对于 要 记录日志的 异常 才 使用以上两种方法。