.net三步配置错误页面,让你的站点远离不和谐的页面
假设你的站点出现一堆让人看不懂的报错,那么你就不是一个合格的程序猿。也不是一个合格的站长。
以下的方面能够帮助你的站点远离让人头大的页面。
第一步:配置web.config
打开web.config,在<system.web>节点下加入例如以下代码:
<customErrors mode="On" defaultRedirect="ErrorPages.aspx">
<error statusCode="403" redirect="403.html" />
<error statusCode="404" redirect="404.html" />
</customErrors>
第二步:建立错误页面
在站点根文件夹下建立404页面(找不到页面):404.html
403页面(server禁止訪问):403.html
这样就能够解决一部分问题,可是假设我们程序有些bug,碰巧被用户发现,那么还是会返回给用户一个不友好的报错页面。所以我们还要建立一个ErrorPages.aspx捕捉那些我们不知道的错误页面。用以处理那些报错,显示给用户良好的页面。
第三步:捕捉未知错误,显示友好提示信息。
在ErrorPages.aspx.cs中增加下面代码:
- if (!IsPostBack)
- {
- HttpException erroy = new HttpException();
- string strCode = erroy.ErrorCode.ToString();
- string strMsg = erroy.Message;
- StringBuilder sb = new StringBuilder();
- sb.Append("-----------记录開始时间:" + System.DateTime.Now+"-----------------<br>");
- erroy.HelpLink = Request.QueryString["aspxerrorpath"];
- sb.Append("ErrorCode:" + strCode + "<br>");
- sb.Append("Message:" + strMsg + "<br>");
- sb.Append("HelpLink:" + erroy.HelpLink + "<br>");
- sb.Append("Source:" + erroy.Source + "<br>");
- sb.Append("TargetSite:" + erroy.TargetSite + "<br>");
- sb.Append("InnerException:" + erroy.InnerException + "<br>");
- sb.Append("StackTrace:" + erroy.StackTrace + "<br>");
- sb.Append("GetHtmlErrorMessage:" + erroy.GetHtmlErrorMessage() + "<br>");
- sb.Append("erroy.GetHttpCode().ToString():" + erroy.GetHttpCode().ToString() + "<br>");
- sb.Append("erroy.Data.ToString():" + erroy.Data.ToString() + "<br>");
- sb.Append("----------记录结束----------------");
- Response.Write(sb.ToString());
- }
到此为止:站点错误配置完毕。当然错误处理页面你能够任意定义,你能够把捕捉到的错误写入数据库或者文件,仅仅显示一些提示信息给用户。你也能够把错误信息处理后友好的显示给用户。
另一种方法是在Global.asax中的void Application_Error(object sender, EventArgs e)方法中定义;现给以大体方法,详细操作能够依据实际情况给以改动。
在Global.asax文件里改动:
void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时执行的代码
Exception erroy = Server.GetLastError();
string err = "出错页面是:" + Request.Url.ToString() + "</br>";
err += "异常信息:" + erroy.Message + "</br>";
err += "Source:" + erroy.Source + "</br>";
err += "StackTrace:" + erroy.StackTrace + "</br>";
//清除前一个异常
//Server.ClearError();
//此处理用Session["ProError"]出错。
所以用 Application["ProError"]
Application["erroy"] = err;
//此处不是page中,不能用Response.Redirect("../ErrorPages.aspx");
System.Web.HttpContext.Current.Response.Redirect(HttpContext.Current.Request.ApplicationPath + "/ErrorPages.aspx");
}
在ErrorPages.aspx.cs文件里改动
protected void Page_Load(object sender, EventArgs e)
{
//显示程序中的错误码
if (!IsPostBack)
{
//显示程序中的错误码
if (Application["erroy"] != null)
{
Response.Write(Application["erroy"].ToString());
}
}
}
补充:使用上述方法实现的跳转,返回的HTTP状态码所有是302。本来应该返回404的也给返回302.这样对搜索引擎优化非常不利。所以我们应该在Global.asax文件里加入例如以下代码:
- protected void Application_Error(Object sender, EventArgs e)
- {
- System.Configuration.Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/Web.config");
- System.Web.Configuration.CustomErrorsSection customErrors = (System.Web.Configuration.CustomErrorsSection)config.GetSection("system.web/customErrors");
- if (customErrors != null && (customErrors.Mode == System.Web.Configuration.CustomErrorsMode.On || customErrors.Mode == System.Web.Configuration.CustomErrorsMode.RemoteOnly))
- {
- System.Web.HttpApplication app = (HttpApplication)sender;
- System.Exception lastError = app.Server.GetLastError();
- System.Web.HttpException httpEx = (HttpException)lastError;
- if (httpEx != null)
- {
- int httpErrorCode = httpEx.GetHttpCode();
- string redirect = customErrors.DefaultRedirect;
- foreach (System.Web.Configuration.CustomError error in customErrors.Errors)
- {
- if (error.StatusCode == httpErrorCode) redirect = error.Redirect;
- }
- app.Server.ClearError();
- app.Context.Response.StatusCode = httpErrorCode;
- Server.Transfer(redirect);
- }
- }
- }
这样问题就得以攻克了。
.net三步配置错误页面,让你的站点远离不和谐的页面的更多相关文章
- 免申请直接用上 IDEA 新 UI,只需要这三步配置
早上给大家介绍了IDEA官方宣布正在开发一套全新的UI,但目前是预览版需要申请才能体验. 随后马上就有网友分享了,不需要申请直接就能激活体验的方法. 本期视频:https://www.bilibili ...
- mongodb安装和配置三步走
最近在重新学习node,所以和同事一起搞了个模仿新浪微博的项目,项目刚开始,所以其他的东西就暂时先不提.这里介绍下mongodb的安装.直接搜索可以看到很多介绍,但是我第一次是失败了,不过看了好几个还 ...
- 轻松三步教你配置Oracle—windows环境
最近笔者在学习Oracle的时候,虽然度过了大家所说的安装难题,但是又遇到了一系列的问题,经过多方求教才知道原来是自己仅仅是安装了Oracle,却没有在环境变量中进行相应的配置.笔者也像大家遇到问题时 ...
- iis7.5安装配置php环境详细清晰教程,三步实现【图文】
iis7.5安装配置php环境详细清晰教程,三步实现[图文] iis7.5是安装在win7.win8里的web服务器,win2003.win2000的web服务器使用的是iis6.0,由于win7.w ...
- 简单三步同步你的 VSCode 用户配置
https://www.cnblogs.com/knight-errant/p/10444777.html 设备重装,换设备,VSCode 又要重新配置了?不不不,简单三步,让你的 VSCode 配置 ...
- ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式
由于ASP.NET Core应用是一个同时处理多个请求的服务器应用,所以在处理某个请求过程中抛出的异常并不会导致整个应用的终止.出于安全方面的考量,为了避免敏感信息的外泄,客户端在默认的情况下并不会得 ...
- EBS中启用OAF页面个性化三个配置
启用OAF页面个性化三个配置(Profiles) FND:诊断英文为FND: Diagnostics,用于设置是否显示“关于此页” 个性化自助定义英文为Personalize Self-Service ...
- HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。
HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 IIS Web Core 通知 BeginReques ...
- Hibernate实体映射配置(XML)简单三步完美配置
我们在使用Hibernate框架的时候,非常纠结的地方就是实体和表之间的映射,今天借助汤老师的思路写了小教程,以后配置不用纠结了! 第一步:写注释 格式为:?属性,表达的是本对象与?的?关系. 例:“ ...
随机推荐
- maven仓库--私服(Nexus的配置使用)
maven--私服的搭建(Nexus的使用)和注意的问题 私服是什么 私服,私有服务器,是公司内部Maven项目经常需要的东东,不总结一下,不足以体现出重视.Nexus是常用的私用Maven服务器,一 ...
- svn修改log信息
在linux下安装了SVN服务器来做版本控制. 有天提交文件忘记了填写SVN提交日志,于是在项目中使用右键,show log,找到我提交的无日志的那条记录,点击右健,选择了“Edit log mess ...
- qq邮箱是怎么做到同一个浏览器让多个不用用户同时打开的? --session的控制
待解:..... 借鉴网址:http://www.zhihu.com/question/20235500 欢迎来讨论.....
- C++sort函数使用总结
头文件:algorithm 对于(整数/字符)数组进行比較时,可直接通过sort(a,a+n)或sort(a.begin(),a.end())进行排序,默认升序排列,须要高速实现降序时,有三种方案 1 ...
- BZOJ 1085: [SCOI2005]骑士精神( IDDFS + A* )
一开始写了个 BFS 然后就 T 了... 这道题是迭代加深搜索 + A* -------------------------------------------------------------- ...
- 百度网盘自动上传脚本-bpcs_uploader
安装jsonpear install pecl/json 一.bpcs_uploader下载和使用: 1.下载地址:http://oott123.github.com/bpcs_uploader/ 2 ...
- 转:携程App的网络性能优化实践
http://kb.cnblogs.com/page/519824/ 携程App的网络性能优化实践 受益匪浅的一篇文章,让我知道网络交互并不是简单的传输和接受数据.真正的难点在于后面的性能优化 下面对 ...
- 用 PS 复制权限
用 PS 复制权限 我们要把源计算机上的文件权限复制到目的计算机上. get-acl .\s.txt | Export-Clixml sddl.xml 把 s.txt 文件的权限保存到 sddl.xm ...
- CodeForces Round #173 (282E) - Sausage Maximization 字典树
练习赛的时候这道题死活超时....想到了高位确定后..低位不能对高位产生影响..并且高位要尽可能的为1..就是想不出比较好的方法了实现... 围观大神博客..http://www.cnblogs.co ...
- PHP - 概述
第1章 PHP概述 学习要点: 1.PHP基础知识 2.PHP的环境配置 3.安装三款主流程序 4.PHP开发工具的选择 5.一个简单的示例 一.PHP基础知识 PHP PHP是一种目前最流行的服务端 ...