ASP.NET自定义错误页并返回正确的500、404状态码

  在项目中,我们常常需要自定义错误页面,但往往返回的状态码都变成了200,对SEO很不友好。我尝试过在百度上寻找解决方案,但找到的资料中说的方法都试过了,发现都是无法返回正确的状态码的。

  最后,只好自已摸索了。经过多次尝试,总算实现了。现在把实现的方法总结出来,供大家参考:

  解决方法:

  在项目根目录下新建Global.asax文件,并在Global.asax文件的Application_Error()方法中写入相应的处理代码即可,无需在Web.Config中做任何自定义错误页面的设置。

  提示:此方法仅在Web Form项目中测试可行。基于MVC架构的项目处理机制可能有所不同,则仅供思路参考。

    void Application_Error(object sender, EventArgs e)
    {
        HttpException error = Server.GetLastError() as HttpException;
        if (error != null)
        {
            var statusCode = error.GetHttpCode();
            if (statusCode == 500)
            {
                Response.StatusCode = 500;
                Server.ClearError();
                Server.Transfer("~/500.htm");
            }
            else if (statusCode == 404)
            {
                Response.StatusCode = 404;
                Server.ClearError();
                Server.Transfer("~/404.htm");
            }
            else if (statusCode == 403)
            {
                Response.StatusCode = 403;
                Server.ClearError();
                Server.Transfer("~/403.htm");
            }
        }

    }

 

效果图:

转载于:https://www.cnblogs.com/wintalen/p/10634878.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值