在一个老站点中,我通过添加redirectMode="ResponseRewrite" ( 3.5 SP1中的新功能)来改变CustomErrors的工作方式:
<customErrors mode="RemoteOnly" defaultRedirect="Error.aspx" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="404.aspx" />
</customErrors> 问题是:它向我显示了一般的错误页面(当您没有设置customErrors时得到的页面。如果我删除redirectMode="ResponseRewrite"部件,它可以正常工作。
我确信服务器上安装了3.5 SP1,因为我在同一台服务器上托管的其他站点上使用了相同的设置。
有什么想法吗?
发布于 2009-04-23 17:09:28
我发现问题出在Error.aspx上。仍然找不到导致问题的error.aspx中的实际错误。
将页面更改为静态html文件解决了此问题。
发布于 2010-09-22 22:28:44
对于试图在MVC应用程序中执行此操作的任何人来说,ResponseRewrite在幕后使用Server.Transfer,这一点很重要。因此,defaultRedirect必须与文件系统上的合法文件相对应。显然,错误与MVC路由不兼容,因此,如果您的错误页面由控制器操作提供,Server.Transfer将查找/ Server.Transfer /任何内容,而不是在文件系统中找到它,并返回一个通用的404错误页面!
发布于 2012-03-12 01:37:42
对我来说完美工作的唯一方法是关闭自定义错误,并通过web.config替换iis的错误页面。它将正确的状态代码与响应一起发送,并具有无需通过mvc的好处。
下面是代码
请注意。如果url是指向文件的直接链接,则使用responsemode="file"
信息:http://tipila.com/tips/use-custom-error-pages-aspnet-mvc
https://stackoverflow.com/questions/781861
复制相似问题