为什么 IIS 不执行我的自定义 404 页面?它会尝试提供原始源代码

为什么 IIS 不执行我的自定义 404 页面?它会尝试提供原始源代码

我正在尝试在 IIS6 中配置自定义错误。

我选择 404 错误,将下拉菜单设置为“URL”,然后输入 URL“/404.aspx”

何时前往:

http://mysite.com/no-page-here

它找到了 404.aspx,但没有将其作为 .Net 页面处理——它尝试将源作为 XML 文件提供,然后由于无法解析而失败。

404 在 .Net 页面上工作正常,因为我在 web.config 的 CustomErrors 元素中设置了它。但对于非 .Net 资源,我必须使用 IIS 错误,它拒绝直接重定向到 404 页面。本质上,它试图提供源代码。

答案1

您是否在 IIS6 中启用了正确的扩展?在 IIS 管理器中,转到 Web 扩展(通常是左侧导航树中的最后一项),并确保已启用所有适当的扩展(通常是 .NET)。否则,就会发生这种情况。

答案2

您是否尝试过输入完整的 URL 而不是仅输入“/”?我认为这种行为发生在您选择“文件”而不是 URL 时,但如果它是本地 URL,也许它也会绕过 ASP.Net 工作进程。

答案3

听起来好像错误文件本身有错误。如果您浏览该文件,它是否能正确提供,或者您是否遇到相同的症状?

答案4

Technet 文章表示要确保并选择 URL,否则可能会有返回页面源代码的风险。

本文解释如何使用 global.asax 文件捕获所有应用程序错误,包括 404。

Global.asax 需要具有:

protected void Application_Error(object sender, EventArgs e)
{
}

现在,当抛出任何异常(无论是一般异常还是 404)时,它都将以 Application_Error 结束。

相关内容