【发布时间】:2014-06-29 11:19:59
【问题描述】:
对于 404 重定向,我使用了以下代码:
try
{
HttpContext.Current.Response.Redirect(url, true);
}
catch (System.Threading.ThreadAbortException)
{ }
这个重定向的问题是页面被重定向到 404 页面并且在 404 页面代码后面,我将 Http Status 设置为 404。因此,当在浏览器中给出不存在的 url 时,首先收到 Http Status 302,然后收到 Http Status 400。
要求是省略这个 Http Status 302。我尝试了一些替代方案,然后我实现了它,如下所示:
HttpContext.Current.Response.Redirect(url, false);
if (url.Contains("404.aspx"))
{
HttpContext.Current.Response.StatusCode = 404;
}
HttpContext.Current.ApplicationInstance.CompleteRequest();
现在,错误页面重定向和 Http 状态码 404 是正确的,但是在浏览器 url 字符串中,错误的 url 仍然存在。我期待有 url {hostname}/404.aspx,但我仍然在浏览器中看到错误的 url,但显示了 404.aspx。因此,它的作用类似于 Server.Redirect。
这是预期的行为吗?如何强制浏览器在 URL 字符串上显示 404.aspx 但仍然只返回 Http Status 404 而之前没有 Http Status 302?
感谢
【问题讨论】:
标签: asp.net http-status-code-404 response.redirect http-status-code-302