.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中加入以下代码:

 

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

 

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

 

这样问题就得以解决了。

当然上述方法是针对.net2.0的,.net3.5以上版本也可以用以下方法给以解决

<customErrors  redirectMode="ResponseRewrite">
    <error statusCode="404" redirect="~/404.aspx"/>
</customErrors>

RedirectMode有两种属性。
ResponseRedirect是指将用户重定向到该错误页面,并且原始 URL 更改为该错误页面的 URL。
ResponseRewrite是指将用户定向到错误页面,并且不更改浏览器中的原始 URL。

然后再在404.aspx.cs文件中,为Page_Load事件中加入以下代码: 

protected void Page_Load(object sender, EventArgs e)
{
    Response.Status = "404 Not Found";
}

下面是我做得一个网站:大家可以测试下,给点建议。天下第一吃网

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值