1

在我们安装 DotNetNuke 的站点设置中,我们将默认页面设置为“500 错误页面”,如下所示。 站点设置 默认页面 DotNetNuke

设置后,我们期望在发生错误时被重定向。相反,我们仍然被重定向到“Default.aspx?tabid=...”页面。

为什么没有显示正确的页面?
我们需要改变什么才能让它工作?

(我们使用的是 v9.02.00 366,.NET Framework 4.6)


编辑:这是我使用自定义模块强制发生错误的方式。

public partial class TriggerError500 : PortalModuleBase
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(UserId == -1)
        {
            throw new NotImplementedException();
        }
    }
}

此模块已放置在公共页面上以测试错误 500 页面。

4

4 回答 4

1

500 错误页面很可能仅在完全未处理异常时使用。例如,如果异常由开发人员处理,则页面上将显示一条友好消息,其中 URL 中包含异常的一部分。这可能是您看到的 URL 的原因。它与相关模块的页面相同,但格式不同。

如果不处理异常,通常会向访问者显示臭名昭著的“黄屏死机”(YSOD)以及错误详细信息。根据 web.config 中的设置,详细程度将是通用的或详细的。我相信这是用于 500 错误页面的用例。这是你应该看到它的时候。

于 2018-10-04T16:55:11.610 回答
0

如果我没记错的话,你可能想在你的 web.config 中试试这个:

<customErrors mode="On" defaultRedirect="500" />
于 2018-10-04T16:20:47.020 回答
0

可以在安全部分中切换将影响平台级别错误处理的设置

屏幕截图在这里

于 2018-10-04T19:32:47.347 回答
0

由于 DNN 处理模块和页面加载的方式,您编写的代码实际上不会触发 HTTP 500 错误,因为页面本身已正确加载。模块加载错误被框架捕获,错误被记录到管理日志中,但页面本身被呈现。

当您无法连接到数据库或其他情况时,通常会收到 HTTP 500 错误,在这些情况下,DNN 将遵守规则。

您可以设置 Response.StatusCode = 500; 然后结束响应并获得所需的行为,但我没有对此进行测试。

于 2018-10-05T05:36:35.623 回答