棋牌源码网

 设置404错误页的意义我就不说了。主要想记录一下这次设置错误页遇到的问题和解决方法。

第一版:本地测试能跳转到自定义的404页面,上线之后却没能跳转 。

  因为之前的项目有跳转404页面的例子 ,所以直接拷贝了一份到现在的项目,代码如下:

HomeController

public ActionResult Index()
{
  Response.StatusCode = 404;
  Response.Charset = "utf-8";
  return View("404");
}

Web.config

    <customErrors defaultRedirect = "home/error" mode="On">
      <error statusCode="404" redirect="/home/error"/>
    </customErrors>

按照上面的代码书写,本地测试跳转到了自定义的404页 ,上线之后却是默认的404页。就这样,第一个版本失败了。

 

第二版:上线之后可以正常跳转至404页面,状态码却返回302 。

  开发中"本地环境可以 ,生产环境却不行"的情况屡见不鲜。后来干脆在阿里云租了一台服务器,这里有个小插曲,我发布了一个测试版本不能正常运行 ,

原因是这个""。

  测试版本跑通之后,发现线上没有跳转自定义404页的原因是没有设置IIS 。设置步骤如下图:

1.找到IIS的404错误页选项(IIS里还有ASP.NET的.NET错误页,这里最好选IIS的错误页 ,下面有写原因)

网站设置404错误页的经历,网站,ASP,开发,第1张

2.打开错误页后 ,编辑自定义错误页,这里以相当路径设置错误页url(IIS的版本不一样,编辑自定义错误页的窗口也不一样)

网站设置404错误页的经历,网站,ASP,开发,第2张

  设置OK之后 ,本以为大功告成,却发现根本错误,返回状态码是302 ,"Response.StatusCode = 404"也没强撸过来。

网站设置404错误页的经历,网站,ASP,开发,第3张

 

网站设置404错误页的经历,网站,ASP,开发,第4张

  至此,第二个版本还是失败了。

 

第三版:利用httpErrors设置网站404页跳转(正确版本)

  之后了解到customErrors会以302重定向跳转至自定义错误页,虽然跳转到了自定义错误页 ,但状态码却不对,并且url都会带参数aspxerrorpath 。

httpErrors只需要配置一下Web.config即可,配置好之后会自动映射到IIS:

Web.config

    <httpErrors errorMode="Custom" existingResponse="Replace">
      <clear />
      <error statusCode="404" path="Error404.html" />
      <error statusCode="500" path="Error500.html" />
    </httpErrors>

映射之后的IIS

网站设置404错误页的经历,网站,ASP,开发,第5张

  到这自定义404页才算设置正确 ,用户请求的错误的url会跳转至自定义404页,状态码返回404,并且保持原url。

 

分析:ASP.NET下的.NET错误页和IIS下的错误页有什么区别?

  在Web.config中 ,分别配置<customErrors>和<httpErrors>节点即可完成两者错误页的设置。主要有以下不同点:

1.从定义上 ,<customErrors>设置ASP.NET应用程序的错误;<httpErrors>是IIS7.0新增的特性,设置IIS对http请求的错误处理;

2.Visual Studio提供了一个脱离IIS但能执行ASP.NET的环境 。想必<customErrors>就是为其准备的;

3.<httpErrors>优先级要高于<customErrors> 。这也是"在本地可以,一上线就不行了"的一个原因。

本文链接:https://www.9n9nw.com/game/1713.html

版权声明:

本站发布的内容若侵犯到您的权益,请邮件联系 web58678@gmail.com 删除,我们将及时处理!

从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!

本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。

本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。

若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。