在我的网站中,我使用IIS7的网址重写模块将http://mysite.com/File.aspx?Name=SomeName之类的网址重定向到http://mysite.com/SomeName。
似乎IIS7已创建相应的规则检查,因此排序http://mysite.com/SomeURL的任何URL都会重定向到File.aspx。在大多数情况下,正确重写URL时,这很好。
问题是,在某些情况下,该文件不再存在 - http://mysite.com/SomeName2仍会被重定向到http://mysite.com/File.aspx?Name=SomeName2。
我想为此URL显示自定义404错误页面 - 如何在global.asax中触发404错误(我在global.asax中设置了应用程序错误记录和处理)?以下代码不起作用。
Response.Status = "404 Not Found"
Response.AddHeader("Location", "http://mysite.com/Invalid-File.aspx?" & Request.QueryString.ToString)
它只显示丑陋的默认IIS 404错误页面。在web.config中添加customerror无济于事。
感谢您的帮助!
答案 0 :(得分:1)
设置状态代码时,您需要根据新的错误代码阻止IIS接管,请务必设置Response.TrySkipIisCustomErrors
,如下所示:
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.NotFound;
Response.AddHeader("Location", "http://mysite.com/Invalid-File.aspx?" & Request.QueryString.ToString)
答案 1 :(得分:1)
您是否尝试在IIS管理中设置404错误页面等于您在web.config中指定的内容?我想知道.net是不是在合适的时间进入管道。
答案 2 :(得分:0)
您可以使用Application_Error方法,然后使用正确的状态代码执行response.redirect到所需的页面