嵌套的应用程序显示外部404页面,而不是其自己的404页面

时间:2019-04-14 13:22:07

标签: c# asp.net .net

我有一个Asp.Net Web项目,并将另一个发布到第一个的子目录中。嵌套的页面有自己的404页面,该页面设置为:

protected void Application_Error(object sender, EventArgs e)
{
    if (Server.GetLastError() is HttpException serverError)
    {
        if (serverError.GetHttpCode() == (int)HttpStatusCode.NotFound)
        {
            Server.ClearError();
            Server.Transfer("~/Error Pages/404.aspx");
        }
    }
}

(外部404页面在外部Web项目中的设置方式与另一404页面相同)。

如果我正在计算机上调试(未嵌套)并选择一个不存在的页面,则会显示此错误页面,以便我知道错误页面可以正常工作。但是,当我将其发布到另一个(第一个)应用程序时,如果我转到一个不存在的页面,则会看到外部应用程序的404页面。

那么,如何使嵌套应用程序中不存在的页面显示嵌套的404页面?

编辑

I think I found the problem。我从嵌套的404页面返回了404,这可能被解释为表示未找到404页面。因此,现在我面临的问题是如何在不发生这种情况的情况下返回404。请参阅链接。

1 个答案:

答案 0 :(得分:2)

正在发生的事情以及可能的解释:

如果您的嵌套应用程序是virtual directory,而根目录是application,我希望~会解析为应用程序的根目录。

因此您的内部网站将根解析为父应用。