在DotNetNuke安装的站点设置中,我们将默认页面设置为“ 500错误页面”,如下所示。
设置此值后,我们希望在发生错误时将其重定向。取而代之的是,我们仍然重定向“ 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页面。
答案 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)
可以在安全性部分切换会影响平台级别错误处理的设置