重定向到Default.aspx,而不是在异常上设置错误500页

时间:2018-10-03 23:01:36

标签: asp.net webforms dotnetnuke http-status-code-500 dotnetnuke-9

在DotNetNuke安装的站点设置中,我们将默认页面设置为“ 500错误页面”,如下所示。 Site Settings Default Pages 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 个答案:

答案 0 :(得分:1)

仅当完全未处理异常时,才可能使用500错误页面。例如,如果异常是由开发人员处理的,则友好的消息将显示在页面上,URL中包含该异常的一部分。这可能解释了您看到的URL内容。该页面与所讨论的模块位于同一页面,但格式不同。

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

如果我的记忆正确,那么您可以在web.config中尝试一下:

<customErrors mode="On" defaultRedirect="500" />

答案 3 :(得分:0)

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

Screen Shot here