ASP.NET和404重定向问题

时间:2010-08-20 12:09:07

标签: asp.net http-status-code-404

我有一个显示大量传入流量的页面。其中一些失败,我想将它们重定向到我的主页,以避免失去潜在的客户。我在global.asax

中试过这个
void Application_Error(object sender, EventArgs e)
        {
            // Code that runs when an unhandled error occurs
            Exception ex = Server.GetLastError();

            if (ex is HttpException)
            {

                if (((HttpException)(ex)).GetHttpCode() == 404)

                    Server.Transfer("~/Default.aspx");

            }

            // Code that runs when an unhandled error occurs

            Server.Transfer("~/Default.aspx");

        }

我尝试使用自定义错误,但我的应用程序一直给我IIS 7.5 HTTP 404错误页面,即使我应该自己处理....一切都在我的开发环境中按预期工作,但在我托管解决方案是不工作...任何解决方案?

4 个答案:

答案 0 :(得分:2)

HTTP 404不是应用程序错误。这是客户端错误,这意味着找不到/不存在请求的Web资源。它在Web服务器到达您的应用程序之前返回,因此您的错误代码将永远不会被执行。

编辑:实际上我不确定这是不是在IIS 7.x集成模式下没有改变,但对于IIS 6和IIS 7.x在经典模式上面的声明是真的。

答案 1 :(得分:2)

尝试以下方法:

throw new HttpException(404, "Not Found");

这应该将用户重定向到web.config中定义的自定义错误页面。

此外,将用户重定向到主页而不是显示特殊的“未找到”页面通常被认为是不好的做法。用户应该知道错误。更好的方法是在错误页面和快速搜索表单上为用户提供一些有用的链接。

答案 2 :(得分:1)

我在此代码中看到同一页面上的潜在死循环(default.aspx)。

答案 3 :(得分:0)

使用http处理程序解决并在web.config中注册