2

我有 EPiServer 应用程序,当加载某些配置或 EPiServer 初始化管道中发生异常时,有时可能会在应用程序启动时引发异常。我已将 customErrors 配置为重定向到 /Error.htm 页面,并且我正在 global.asax 中的 Application_EndRequest 事件中处理此页面的响应状态代码,以返回正确的状态代码,如下所示:

    protected void Application_EndRequest(object sender, EventArgs e)
    {
        if (Request.Url.AbsolutePath.EndsWith("Error.htm"))
        {
            Response.StatusCode = 500;
            Response.TrySkipIisCustomErrors = true;
        }
    }

它在加载应用程序时发生异常时效果很好,但在加载配置文件(在我的情况下为 episerver.config)或 EPiServer 初始化管道中发生异常时(EPiServer 中有一个错误)则不行。

尝试创建 IHttpModule,但未初始化。试图在 Application_Error 中添加错误处理,但它也没有被触发。

似乎 ASP.NET 正在处理这些异常,因为它正确重定向到我的 Error.htm 页面,但它设置了状态代码 304。而且我找不到进入管道以更改状态代码的方法。

我需要错误页面的 500 状态代码来配置负载均衡器以关闭配置错误的服务器。

更新

我已将自定义错误设置为 Off,以便将正确的状态代码发送到 IIS:

<customErrors mode="Off" defaultRedirect="/Error.htm"></customErrors>

配置 httpError 部分以重定向到 Error.htm,但完整的异常详细信息在本地和远程显示。当我添加 existingResponse="Replace" 时,由于重定向循环,它会引发异常:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="500" subStatusCode="-1" />
  <error statusCode="500" prefixLanguageFilePath="" path="Error.htm" responseMode="Redirect" />
</httpErrors>

将 httpError 部分配置为 ExecuteURL,但仍会在本地和远程显示完整的异常详细信息。当我添加 existingResponse="Replace" 它仍然在本地和远程显示完整的异常详细信息:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="500" subStatusCode="-1" />
  <error statusCode="500" prefixLanguageFilePath="" path="/Error.htm" responseMode="ExecuteURL" />
</httpErrors>

如果我设置 responseMode="File" 和 existingResponse="Replace" 它会在本地和远程显示 Error.htm:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="500" subStatusCode="-1" />
  <error statusCode="500" prefixLanguageFilePath="" path="Error.htm" responseMode="File" />
</httpErrors>

在本地获取错误详细信息和远程获取 Error.htm 仍然没有运气。

4

3 回答 3

2

在 EPiServer 7 及更高版本中,您可以使用它globalErrorHandling来设置预期的行为。

要让 httpErrors/customErrors 完成错误处理,您可以将参数设置为Off

<episerver>
  <applicationSettings globalErrorHandling="Off" />
</episerver>

可能的值"RemoteOnly|On|Off"如下所述:http: //world.episerver.com/documentation/Items/Developers-Guide/Episerver-CMS/8/Configuration/Configuring-episerver/

您也可以在后台访问此参数(这将在保存时编辑您的 web.config):

在此处输入图像描述

于 2016-01-19T21:33:44.097 回答
0

您可能需要禁用 EPiServer 错误处理。您可以通过打开 episerver.config 并将“”元素上的“globalErrorHandling”属性设置为“Off”来实现。

启用 globalErrorHandling 后,我的 customErrors 和 httpErrors 设置将无法按预期工作。

部分答案是从这个地址复制的:http ://www.eyecatch.no/blog/2011/09/custom-error-pages-in-episerver/

于 2013-12-10T07:56:43.637 回答
0

你可能会调查<httpErrors>而不是<customErrors>

http://tedgustaf.com/blog/2011/5/custom-404-and-error-pages-for-asp-net-and-static-files/上的一些信息。

于 2013-04-26T11:42:05.603 回答