欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-20 08:58:55
在项目中,我们常常需要自定义错误页面,但往往返回的状态码都变成了200,对SEO很不友好。我尝试过在百度上寻找解决方案,但找到的资料中说的方法都试过了,发现都是无法返回正确的状态码的。 最后,只好自已摸索了。经过多次尝试,总算实现了。现在把实现的方法总结出来,供大家参考: 解决方法: 在项目根目录下 ......

  在项目中,我们常常需要自定义错误页面,但往往返回的状态码都变成了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");
            }
        }

    }

 

效果图:

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