【问题标题】:ASP.NET: What do I do, when the customError page gives an error?ASP.NET:当 customError 页面出现错误时,我该怎么办?
【发布时间】:2012-10-08 06:28:17
【问题描述】:

我的 ASP.NET 应用程序中有以下 customErrors 部分:

<customErrors mode="RemoteOnly">
   <error statusCode="500" redirect="500.aspx"/>
</customErrors>

如果“500.aspx”给出错误(例如,当数据库关闭时可能发生),我如何显示用户友好的消息?

【问题讨论】:

    标签: asp.net web-config


    【解决方案1】:

    您可以使用静态页面(例如 500.html)来避免此问题。

    回应共同评论:

    我只想在“500.aspx”不起作用时使用静态页面。

    了解 500.aspx 是否有效的唯一可靠方法是尝试一下。所以在这种情况下,您可以在 web.config 的customErrors 元素中定义 500.aspx,并在 global.asax 中处理 500.aspx 的特定情况,例如:

    void Application_Error(object sender, EventArgs e)
    {
        HttpException httpException = Server.GetLastError() as HttpException;
        if (httpException == null) return;
        int httpCode = httpException.GetHttpCode();
        if (httpCode == 500 && 
            Request.Path.EndsWith("/500.aspx", StringComparison.OrdinalIgnoreCase))
        {
            Server.ClearError();
            Response.Redirect("~/500.htm");
        }
    }
    

    【讨论】:

    • 我想尽可能使用“500.aspx”。因为它将所有网站信息都保存在数据库中:导航,公司电子邮件,徽标等。如果“500.aspx”出错,我可以使用静态页面吗?
    • 澄清:我只想在“500.aspx”不起作用时使用静态页面。否则使用“500.aspx”。这可能吗?
    【解决方案2】:

    如果您创建一个错误页面并始终让用户在那里结束。还是您希望每个 statusCode 都有一个特定的页面? 如果你愿意,你甚至可以添加一个邮件方法来通知你某些错误。

    【讨论】:

    • 我想为每个错误代码使用一个单独的页面。这就是我们的客户习惯在 CMS 中做的事情。那么如何在不乱用 C# 的情况下启用电子邮件通知呢?
    • 邮件方法是通过 c# 实现的,所以如果你不想使用它,我怀疑你是否可以这样做。
    • 啊,好的。只是认为在 web.config 中有特定的设置。
    猜你喜欢
    • 2021-07-11
    • 2021-04-27
    • 2022-11-13
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2021-08-06
    相关资源
    最近更新 更多