Edi Wang

Azure Developer, Microsoft MVP

httpErrors


针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结

自定义错误页面和异常记录是个很古老的话题了,但依旧可以让人爆到现在。在我做了无数次试验并总结经验和原则后,写下本文,已警后人。 本文的范围和限制 本文仅仅适用于部署在IIS7或以上版本中的ASP.NET 4.0集成模式应用程序。IIS7以上的意思是Windows Server 2008以上服务器适用。我已在WS2012R2,IIS8上测过。 本文的方法均适用于ASP.NET WebForm和MVC应用程序。 本文针对的问题 静态错误页面好还是动态错误页面好?我该如何设计ASP.NET网站错误处理? 我不希望错误页面后面跟上aspxerrorpath=…这个小尾巴。 我的自定义错误页面在VS里调试是好的,为什么部署到服务器上就出不来了? 我的自定义错误页面可以正常显示,但为什么返回的Http状态码不正确? 异常日志该怎样记录,有没有比较好的实践? 一、错误页面的选择 选择静态html页面 …

httpErrors IIS7

ASP.NET自定义错误页的正确方法,返回真正状态码而不是200OK

昨天在码页面的时候手写了一次AJAX,蛋都碎了,顺便发现了一个问题。我在ajax的脚本里检查http的返回状态是不是200OK以此来判断ajax是否执行成功。结果发现网站里所有的404、500页面均返回200OK,我蛋都碎了。用Firebug检查了一下,确实如此。这是自定义错误页的问题。如果用了html静态页作为错误页,比如404.html,通常我们的web.config里会这样写: 这段配置是给IIS7的,以往写在customError里,其实问题是一样会出现的。这样写的问题就在于,如果遇到了404错误,它确实会返回我们的404.html,但状态码却不是404。这样搜索引擎会认为这是一个网站中已存在的页面并收入索引,如果被人搜到,搜索预览里会直接显示我们错误页的内容,非常傻逼,会被人笑了。不信可以用firebug检查一下: 而正确的结果应该是返回404状态 …

ASP.NET httpErrors

  • 1