当前位置: 首页 > news >正文

ASP.net错误处理(错误跳转页 webconfig)

使用定制错误页面
  
   虽然我们发送给用户的公用错误信息是安全的,就是说它不会威胁到应用程序的秘密,但是这样的信息并不好看。也许你希望用户永远也看不到这样的信息。相反,当处理请求的过程中,如果发生了一个为处理的错误,你希望能够显示自己的“定制错误页面”,显示出自己的品牌以及特定的错误信息。

向ASP.NET 应用程序中增加定制错误信息非常容易。首先,编写自己的 web页面,它可以是任何类型的文件:.htm,.aspx,.asp,等等。然后在应用程序的config.web文件中修改配置信息,让它指向这个文件。

举例说明,以下这个配置信息说明在发生了任何未能预定处理错误的情况下,浏览器都应该被重定向到“ErrorPage.aspx”页面:


  
<configuration> <customerrors mode="remoteonly" defaultredirect="ErrorPage.aspx" /> </configuration>

<customerrors>标记中的“defaultredirect”属性定义了在发生错误的情况下,用户将被重定向到的“默认”页面。或者,也可以根据响应的http代码状态,重定向到其它的页面来覆盖这个默认值。例如:重定向到一个特殊的“未找到文件”错误页面、“非法访问”错误页面、“服务器冲突”错误页面等等。

举例说明,以下的配置信息覆盖3个特定的http 状态代码,所有其它错误都返回到一个默认页面:


  
<customerrors defaultredirect="http://anotherhost/error.aspx" mode="remoteonly"> <error statuscode="500" redirect="http:/anotherhost/pages/callsupport.html" /> <error statuscode="404" redirect="http:/anotherhost/pages/adminmessage.html" /> <error statuscode="403" redirect="http:/anotherhost/pages/noaccess.html" /> </customerrors>

在定制错误页面上有一件事我们已经遇到过,那就是虽然它们对于已经完成的情况非常有用,然而在开发过程中却非常难以对付。因为你预想到在开发过程中会有bug,并且当你发现的时候,真的希望看到实际的错误信息跟踪。为了解决这个问题,<customerrors>标记支持一个有3个值的“mode”属性:

“on”:意思是总是发出定制错误页面;

“off”:意思是从不发出定制错误页面(你总是看到原始的错误信息);

“remoteonly”:意思是只有当远程浏览器点击站点时才发出定制错误页面(而在实际机器上点击站点的开发人员看到的是详细的错误信息)。

二,在Global.asax文件中添加应用出错代码,写入系统日志文件
protected void Application_Error(Object sender, EventArgs e)
{
Exception LastError = Server.GetLastError();
String ErrMessage = LastError.ToString();

String LogName = "MyLog";
String Message = "Url " + Request.Path + " Error: " + ErrMessage;

// Create Event Log if It Doesn't Exist

if (!EventLog.SourceExists(LogName))
{
EventLog.CreateEventSource(LogName, LogName);
}
EventLog Log = new EventLog();
Log.Source = LogName;
//These are the five options that will display a different icon.
Log.WriteEntry(Message, EventLogEntryType.Information, 1);
Log.WriteEntry(Message, EventLogEntryType.Error, 2);
Log.WriteEntry(Message, EventLogEntryType.Warning, 3);
Log.WriteEntry(Message, EventLogEntryType.SuccessAudit, 4);
Log.WriteEntry(Message, EventLogEntryType.FailureAudit, 5);

}

转载于:https://www.cnblogs.com/millen/archive/2009/08/18/1548684.html

相关文章:

  • 技术疏于交流
  • Bash中${}的用法数组字符串的切片和变量的间接引用
  • 检测运行在vista下的程序是否以管理员身份运行 API
  • HenCoder Android 开发进阶: 自定义 View 1-1 绘制基础
  • Java定时器Web(转)
  • Fiddler get和post数据
  • 运营商:让3G与WLAN发展均衡(转)
  • 卡姆丹克太阳能完成建设福州太阳能屋顶分布式发电项目
  • 修复52项安全漏洞:请用户尽快升级Flash Player
  • 键盘扫描码
  • 微软大数据分析语言R Open升至3.3.2版本
  • WebRebuild第三届年会菩提树下介绍及相关资料下载
  • 用技术提高回归测试精确度
  • 错过了无奈
  • php 字符串重要函数
  • Elasticsearch 参考指南(升级前重新索引)
  • gcc介绍及安装
  • Github访问慢解决办法
  • go语言学习初探(一)
  • JWT究竟是什么呢?
  • npx命令介绍
  • Spark RDD学习: aggregate函数
  • 阿里云Kubernetes容器服务上体验Knative
  • 跨域
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 通信类
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 智能合约Solidity教程-事件和日志(一)
  • 字符串匹配基础上
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • %@ page import=%的用法
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (30)数组元素和与数字和的绝对差
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (HAL库版)freeRTOS移植STMF103
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (TOJ2804)Even? Odd?
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (三分钟)速览传统边缘检测算子
  • (算法二)滑动窗口
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET MVC 验证码
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • @Repository 注解
  • @RequestBody与@ResponseBody的使用
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [4.9福建四校联考]
  • [android学习笔记]学习jni编程
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)