我们正在运行在EPiServer(CMS5 R2,最新版本)和运行在IIS7上的ASP.NET 3.5构建的站点,我们已经构建了一个自定义错误处理程序,它利用EPiServer的URLRewriter功能来处理404和301状态代码,一切都在本地工作(Windows 7 + IIS7.5),但我们无法让404页面在实时服务器上运行(Windows 2008 Server + IIS7)。 301重定向工作,但对于404页面,我们只获得默认的IIS7消息:
iis7 default 404 message http://episerversucks.com/upload/iis7_error.png
由于预定义的301重定向工作(我们需要重定向到新站点的旧站点的URL),处理程序显然会被解雇,但是对于404 IIS7,只需用它的默认消息替换它们。
404处理程序的工作方式是内部重定向到页面/Pages/Error404.aspx,它以适当的语言显示一个很好的自定义404页面,并通过{{1将它自己的状态代码设置为404我从一个站点获得了一个提示,将TrySkipIisCustomErrors变量更改为true,即Response.StatusCode = 404;
,但这也没有帮助。
我在本地开发机器和服务器之间找到的唯一配置差异是本地计算机的配置设置称为“.NET错误页面”和一个名为“错误页面”的设置“,虽然实时服务器仅具有名为”错误页面“的设置,并且缺少.NET错误页面,但我发现无法将.NET错误页面配置对话框添加到服务器,具体是 IIS7.5 吗?
在一天中的大部分时间里,我一直在挖掘这个问题并且找不到似乎有用的解决方案,所以我转到这里。
编辑:本地开发版和实时版具有相同的web.config,设置等(显然除了数据库连接字符串)
答案 0 :(得分:1)
好的,所以我解决了,问题是将<httpErrors errorMode="Detailed" />
设置为Detailed,如果它在Custom上,则IIS7错误处理程序拦截所有返回404的页面并将响应切换出来。