ASP.NET MVC 异常处理
来源:互联网 发布:linux复制命令覆盖 编辑:程序博客网 时间:2024/05/16 15:55
当网站 运行 出错时,不能将 原本的异常 信息 直接显示出来,这样很不友好,用户也看不懂;而且,异常信息会显示出调用堆栈,会影响网站的安全性。
2. 用户访问不存在的页面:
用户完全可以访问 根目录下不存在的页面。这个时候 就会出现异常。
例子: 360 首页,如果出现这种情况会重定向到 首页。而 新浪网会 出现一个 错误页面。
这都是比较好的 处理方法。
3. ASP.NET MVC 如何处理 用户访问不存在的页面:
我们可以在 web.config 里配置 <customerError/> 节,并设置一个默认的 页面,这样如果用户访问 不存在的页面(404),就重定向到这个页面。例如:
<!--启动 异常处理--> <customErrors mode="On" defaultRedirect="Error.html"> <error statusCode="404" redirect="Error.html"/> </customErrors>
<customerError> 的 mode 可以 设置 是否处理异常。如果设置为 "RemoteOnly" ,则 在服务器 可以看到出错的 调用堆栈,而客户端浏览器 看到的是 错误 页面。
不过这个页面只能放在 网站的根目录下。
我们可以 定义一个 控制器操作(或者是 网站的首页),当出现 异常时,就导航到这个操作。
<!--启动 异常处理--> <customErrors mode="On" defaultRedirect="Test/index"> <error statusCode="404" redirect="Test/index"/> </customErrors>
4. 日志处理:
使用 上面的做法,我们基本可以处理所有的错误信息了。<error/> 里可以设置 statusCode, 然后导航到 你自己定义的页面。但有时候这样还不能完全满足需求,比如我们需要 记录错误日志,以方便开发人员 调试修改。
可以在 以上的基础上加入 如下操作,进行日志记录:
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 即可。
对于 要 记录日志的 异常 才 使用以上两种方法。
- ASP.NET MVC 异常处理
- asp.net mvc 的异常处理解决方案
- asp.net mvc 的异常处理解决方案
- asp.net mvc全局异常处理
- ASP.NET mvc异常处理的方法
- ASP.NET MVC中全局异常处理
- asp.net mvc异常处理的不同方法c
- ASP.NET MVC中的统一化自定义异常处理
- ASP.NET MVC自定义异常捕捉及处理
- ASP.NET MVC Json()处理大数据异常解决方法
- ASP.NET mvc异常处理的方法有哪些
- ASP.NET MVC Json()处理大数据异常解决方法
- ASP.NET MVC中的统一化自定义异常处理
- Asp.net MVC Session过期异常的处理
- ASP.NET MVC中的统一化自定义异常处理
- ASP.NET MVC下基于异常处理的完整解决方案
- ASP.NET Core MVC 中设置全局异常处理方式
- ASP.NET 异常处理
- poj1226
- .NET中Page_Load事件
- spring--quartz--手动执行
- php&mysql基础巩固
- 苹果IOS开发者账号总结
- ASP.NET MVC 异常处理
- assertion 断言
- 将Ubuntu的引导写入自己所在分区——变色龙引导Linux,Windows,Mac OS(苹果系统)攻略之一
- 关于xpe和wes2009
- WAS7启动报错原因为修改了主机名
- HDU 3746 Cyclic Nacklace(KMP:补齐循环节)
- 存储领域的会议和研究机构
- 60岁超模奶奶俯身提鞋都迷人——超模奶奶食谱
- mybatis实战教程(mybatis in action),mybatis入门到精通