【问题标题】:404 error page not showing404错误页面未显示
【发布时间】:2009-08-30 16:07:43
【问题描述】:

我的 web.config 中有这个,它由 DiscountASP.net ISP 托管

 <customErrors mode="On" defaultRedirect="">
        <error statusCode="404" redirect="404.aspx"/>
        <error statusCode="500" redirect="404.aspx"/>
    </customErrors>

我在 DiscountASP.net 上托管该站点,他们还告诉您以这种方式配置它。我正在使用企业库,但我认为这不会有所作为。我认为我不需要为 EL 中的 404 配置任何内容。

当我的页面加载出现错误时,我的 404.aspx 不显示,并且我收到默认自定义错误关闭消息。我不知道为什么我的 404.aspx 页面没有显示,而是得到了这个:

运行时错误 说明:服务器上发生应用程序错误。此应用程序的当前自定义错误设置阻止远程查看应用程序错误的详细信息(出于安全原因)。但是,本地服务器计算机上运行的浏览器可以查看它。

详细信息:要在远程计算机上查看此特定错误消息的详细信息,请在位于当前 Web 应用程序根目录的“web.config”配置文件中创建一个标签。然后,此标记应将其“模式”属性设置为“关闭”。

注意:您看到的当前错误页面可以通过修改应用程序配置标签的“defaultRedirect”属性以指向自定义错误页面 URL 来替换为自定义错误页面。

【问题讨论】:

  • 当您转到不存在的页面时是否会出现 404 错误?

标签: asp.net


【解决方案1】:

您是否尝试过使用相对路径来查看是否有影响?

<error statusCode="404" redirect="~/404.aspx"/>

或者,尝试使用绝对路径:

<error statusCode="404" redirect="http://www.domain.com/errors/404.aspx"/>

编辑:正如其他人指出的那样,根据您对另一个答案的评论,当有人导航到不存在的页面时,应该显示 404 错误页面,而一般错误默认重定向可以捕获页面。因此,如果您正在测试 404,请确保您正在使用不存在的页面进行测试。要测试 defaultRedirect,然后让您的一个页面抛出异常等。

【讨论】:

    【解决方案2】:

    您是否有可能在另一个 web.config 中覆盖它,比如在子文件夹中?或者我们可以走另一条路。您确定这是在应用程序根目录中吗?

    【讨论】:

    • 不,我实际上删除了所有文件并重新上传到 ISP。只有一个 web.config。
    【解决方案3】:

    您有什么理由不想对 500 错误使用 defaultRedirect 吗?

    【讨论】:

    • 事实上,我指定了 404.aspx 作为 defaultRedirect 的测试(我知道它不在我的帖子中,但我尝试过)并且它没有产生差异。无论如何,我仍然没有看到任何错误页面。
    • 当 YSOD(黄屏死机)出现时,您是否在篡改数据/提琴手中看到响应代码为 500?
    • 我想在任何 .aspx 运行时错误上显示一个友好的错误页面
    • 啊,好吧,即使我指定了 defaultRedirect,它仍然无法访问我的页面。
    【解决方案4】:

    您正在对文件进行 FTP 处理吗?尝试将文件作为二进制文件而不是文本上传。您可能遇到编码问题。我现在愿意打赌,您在 web.config 中所做的一切都不起作用。

    【讨论】:

      【解决方案5】:

      我找到了解决方案here。 真正的收获是使用这个:

      Response.TrySkipIisCustomErrors = true;
      

      【讨论】:

        猜你喜欢
        • 2012-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-22
        • 1970-01-01
        • 2011-02-08
        相关资源
        最近更新 更多