【问题标题】:ASP.NET 5 custom error page does not render on Azure WebsiteASP.NET 5 自定义错误页面未在 Azure 网站上呈现
【发布时间】:2015-06-17 20:50:31
【问题描述】:

我有一个 ASP.NET 5 站点,我想向其中添加自定义错误页面。我习惯于在 web.config 中添加条目(从 ASP.NET 4 天开始),但我想在 ASP.NET 5 中使用新方法。所以我的 Startup.cs 类中有以下内容:

if (env.IsEnvironment("Development"))
{
    app.UseErrorPage(ErrorPageOptions.ShowAll);
}
else
{
    app.UseStatusCodePagesWithReExecute("/Home/Error");
    app.UseErrorHandler("/Home/Error");
}

当我使用 kestral 在本地运行时,我的错误页面会正确显示。但是,当我部署到 Azure 时,我会在尝试测试 404 错误时得到非常通用的白色错误页面:

“您要查找的资源已被删除、更改名称或暂时不可用。”

我尝试在我的 web.config 中实现这个答案,但它没有解决我的问题:

https://stackoverflow.com/a/29539669/8320

这是我的 web.config 的相关部分:

<system.web>
    <customErrors mode="Off" />
</system.web>

我还确保了 Azure 网站的配置/应用设置部分中的 ASPNET_ENV="Production"。

有什么想法吗?如果我可以提供更多信息,请告诉我。

【问题讨论】:

  • StatusCodePages 中间件和 404 响应似乎在 IIS 上表现不同。您可以查看此问题,看看是否可以解决您的问题:github.com/aspnet/Diagnostics/issues/144
  • 谢谢@KiranChalla 似乎解决了这个问题。当我将 env.IsEnvironment("Development") 块留在原地时,我确实有一个问题,为什么我会得到一个空白/空窗口。当我删除 if 语句和 app.UserErrorPage(ErrorPageOptions.ShowAll); 时,我只会显示正确的错误屏幕。有任何想法吗?另外,如果您将您的评论作为答案,我会投票赞成。

标签: asp.net asp.net-mvc azure azure-web-app-service asp.net-core


【解决方案1】:

IIS 是一个棘手的野兽,我们仍在 ASP.NET 5 中解决这个问题。当您在 IIS 上运行时,我们会通过中间件管道运行,然后如果没有处理请求,则回调到 IIS 本机模块。当您得到任何中间件未处理的 404 时,它将重新进入 IIS 管道并触发 IIS 特定的错误页面。 UseStatusCodePagesWithReExecute 中间件仍在运行,但此时 IIS 已经将标头和正文发送到客户端(本例中为浏览器)。

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2016-08-18
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多