.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页面(服务器禁止访问):403.html

这样就可以解决一部分问题,但是如果我们程序有些bug,碰巧被用户发现,那么还是会返回给用户一个不友好的报错页面。所以我们还要建立一个ErrorPages.aspx捕捉那些我们不知道的错误页面,用以处理那些报错,显示给用户良好的页面。

第三步:捕捉未知错误,显示友好提示信息。

在ErrorPages.aspx.cs中加入以下代码:

[c-sharp] view
plain
copy

  1. if (!IsPostBack)
  2. {
  3. HttpException erroy = new HttpException();
  4. string strCode = erroy.ErrorCode.ToString();
  5. string strMsg = erroy.Message;
  6. StringBuilder sb = new StringBuilder();
  7. sb.Append("-----------记录开始时间:" + System.DateTime.Now+"-----------------<br>");
  8. erroy.HelpLink = Request.QueryString["aspxerrorpath"];
  9. sb.Append("ErrorCode:" + strCode + "<br>");
  10. sb.Append("Message:" + strMsg + "<br>");
  11. sb.Append("HelpLink:" + erroy.HelpLink + "<br>");
  12. sb.Append("Source:" + erroy.Source + "<br>");
  13. sb.Append("TargetSite:" + erroy.TargetSite + "<br>");
  14. sb.Append("InnerException:" + erroy.InnerException + "<br>");
  15. sb.Append("StackTrace:" + erroy.StackTrace + "<br>");
  16. sb.Append("GetHtmlErrorMessage:" + erroy.GetHtmlErrorMessage() + "<br>");
  17. sb.Append("erroy.GetHttpCode().ToString():" + erroy.GetHttpCode().ToString() + "<br>");
  18. sb.Append("erroy.Data.ToString():" + erroy.Data.ToString() + "<br>");
  19. sb.Append("----------记录结束----------------");
  20. Response.Write(sb.ToString());
  21. }

到此为止:网站错误配置完成。当然错误处理页面你可以随意定义,你可以把捕捉到的错误写入数据库或者文件,只显示一些提示信息给用户,你也可以把错误信息处理后友好的显示给用户。

还有一种方法是在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文件中添加如下代码:

[c-sharp] view
plain
copy

  1. protected void Application_Error(Object sender, EventArgs e)
  2. {
  3. System.Configuration.Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/Web.config");
  4. System.Web.Configuration.CustomErrorsSection customErrors = (System.Web.Configuration.CustomErrorsSection)config.GetSection("system.web/customErrors");
  5. if (customErrors != null && (customErrors.Mode == System.Web.Configuration.CustomErrorsMode.On || customErrors.Mode == System.Web.Configuration.CustomErrorsMode.RemoteOnly))
  6. {
  7. System.Web.HttpApplication app = (HttpApplication)sender;
  8. System.Exception lastError = app.Server.GetLastError();
  9. System.Web.HttpException httpEx = (HttpException)lastError;
  10. if (httpEx != null)
  11. {
  12. int httpErrorCode = httpEx.GetHttpCode();
  13. string redirect = customErrors.DefaultRedirect;
  14. foreach (System.Web.Configuration.CustomError error in customErrors.Errors)
  15. {
  16. if (error.StatusCode == httpErrorCode) redirect = error.Redirect;
  17. }
  18. app.Server.ClearError();
  19. app.Context.Response.StatusCode = httpErrorCode;
  20. Server.Transfer(redirect);
  21. }
  22. }
  23. }

这样问题就得以解决了。

.net三步配置错误页面,让你的网站远离不和谐的页面,布布扣,bubuko.com

时间: 2024-08-07 00:16:31

.net三步配置错误页面,让你的网站远离不和谐的页面的相关文章

三步配置SSH 免密码登录

Step1:在 Client 端建立 Public 与 Private Key $ssh-keygen -t dsa <==这个步骤产生 Keys  Generating public/private rsa key pair.  Enter file in which to save the key (/root/.ssh/id_dsa): <== 按下 Enter  Enter passphrase (empty for no passphrase): <== 按 Enter  En

iis7.5安装配置php环境详细清晰教程,三步实现【图文】

iis7.5安装配置php环境详细清晰教程,三步实现[图文] iis7.5是安装在win7.win8里的web服务器,win2003.win2000的web服务器使用的是iis6.0,由于win7.win8系统相比win2003.win2000有了改新革面的不同,因此对于iis7.5的配置也必需捣鼓一翻才能熟悉.不过这些都是操作性的东西,就如当初第一次接触iis6.0那样,操作过几遍就慢慢熟悉了. 当下我需要web服务器运行php程序,因此要配置一下php环境.一开始以为比较容易,因为在iis6

【JSP】配置错误页面

1,使用JSP方式 如果配置是Jsp时,需要把isErrorPage设置为true, 以及设置 <%@ page language="Java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8" isErrorPage="true"%> 错误页面: <%@page import="java.io.PrintStream"

三种呈现错误页面的方式

三种呈现错误页面的方式 由于ASP.NET Core应用是一个同时处理多个请求的服务器应用,所以在处理某个请求过程中抛出的异常并不会导致整个应用的终止.出于安全方面的考量,为了避免敏感信息的外泄,客户端在默认的情况下并不会得到详细的出错信息,这无疑会在开发环境下增加查错纠错的难度.对于生产环境来说,我们也希望最终用户能够根据具体的错误类型得到具有针对性并且友好的错误消息.ASP.NET Core提供了相应的中间件帮助我们将定制化的错误信息呈现出来,这些中间件都定义在"Microsoft.AspN

PHP三步实现静态页面

平时看到一些新闻网站里面的每一条新闻的页面地址都是类似这样的:http://www.ibye.cn/news/1.html 这种格式很受搜索引擎的青睐,相反,类似这一种:http://www.ibye.cn/news/1 就没有那么受欢迎了 这里有一种方法可以生成一个静态的页面: 第一步,打开缓冲区,在代码最后加一句:ob_start(); 第二步,获得缓冲区的内容:$content = ob_get_contents(); 第三步,保存该页面:file_put_contents('/news/

报表页面集成天气,简单三步,一看就懂

条条框框的报表页面枯燥乏味?不妨给页面加点“新意”! 前阵子,在看天气预报的时候,发现免费天气预报的调用代码,瞬间想到可以给我开发的报表“润润色”. 一共三个步骤,教你手到擒来 第一步 先去天气资源提供者(自行百度)挑选适合自己页面的预报 第二步 copy框中iframe标签. JS代码: document.writeln("<iframe name=\"weather_inc\" src=\"http:\/\/i.tianqi.com\/index.php?

EBS中启用OAF页面个性化三个配置

启用OAF页面个性化三个配置(Profiles) FND:诊断英文为FND: Diagnostics,用于设置是否显示“关于此页” 个性化自助定义英文为Personalize Self-Service Defn,用户设置在登录后,OAF页面是否显示“个性化页” FND:已启用“个性化区域”链接英文为FND: Personalization Region Link Enabled,个可值:最小.是.否.是,会显示所有区域链接:最小,最低限度的显示区域链接.

IIS中遇到无法预览的问题(HTTP 错误 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面。)

在IIS中  依次执行如下操作: 网站--编辑权限--共享(为了方便可以直接将分享对象设置为everyone)--安全(直接勾选 everyone )--应用--确定. IIS中遇到无法预览的问题(HTTP 错误 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面.)

重新配置EM 三步

1.使用"emca -deconfig dbcontrol db"命令删除配置 2.使用"emca -repos drop"命令删除 repository 3.使用"emca -config dbcontrol db -repos create"命令进行创建em 使用 emctl status dbconsole 可查看em状态 重新配置EM 三步