【问题标题】:Problem with custom errors in ASP.NETASP.NET 中的自定义错误问题
【发布时间】:2011-01-11 06:48:11
【问题描述】:

我的设置:

  • Windows 7 旗舰版
  • IIS 7
  • Visual Studio 2008

场景:

  • 在本地构建一个简单的网站
  • 我的应用中出现异常(这是完美的,因为我正在尝试设置自定义错误页面)
  • 如果在 web.config 文件中没有设置 customErrors,我会得到有关错误的详细信息
  • 使用 web.config 文件中的 customErrors 设置,当我发生错误时,我会看到以下页面:

运行时错误

说明:服务器上出现应用程序错误。此应用程序的当前自定义错误设置会阻止查看应用程序错误的详细信息。

还有比这更多的文字,但我相信你们以前都看过。此时,网址为:

http://localhost/bluheron/Error.aspx?aspxerrorpath=/bluheron

因此,它看起来像是重定向到我的错误页面 (Error.aspx),但我没有看到我的错误文本(“发生错误。请重试。”)。相反,我得到了一个带有大量其他文本的时髦 URL,包括有关如何设置我的 web.config 文件的说明,顺便说一下,该文件包含以下内容:

<customErrors mode="On" defaultRedirect="Error.aspx" />

它在默认位置,在 system.web 部分内,在 configuation 部分内。

顺便说一句,我的 Error.aspx 页面位于我的应用程序的根目录中。

谁能解释一下这个花哨的 URL 是什么以及为什么我的简单错误页面没有显示?

谢谢, 周杰伦

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    错误重定向正是 customErrors 通常发生的情况……但是,您可以禁用此行为并保留原始 url(不发送 302 将您的用户重定向到错误页面的 url)。这将执行/发送错误页面的输出:

    redirectMode="ResponseRewrite" 添加到您的 customErrors 声明中:

    <customErrors mode="On" defaultRedirect="Error.aspx" redirectMode="ResponseRewrite" />
    

    如果您仍然遇到相同的行为,则表明整个应用程序有问题,您应该关闭 customErrors 并查看问题所在(这会在无效的 web.config 和许多其他情况下发生)。

    【讨论】:

    • 现在一切似乎都很好,但我不确定发生了什么变化。无论如何,我很欣赏关于 redirectMode 属性的提示。谢谢,尼克。
    猜你喜欢
    • 2013-12-15
    • 2010-09-30
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多