ASP.NET 5 自定义错误页面未在 Azure 网站上呈现

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

我有一个 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"。

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

最佳答案

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

关于ASP.NET 5 自定义错误页面未在 Azure 网站上呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30902135/

相关文章:

java - 将经过身份验证的用户保存到来自 Azure AD 的数据库

Azure函数在发布后重新生成 key

asp.net - 如何选择下拉列表值,然后使用PowerShell和IE 6.0回发

asp.net - 覆盖 app.config(或 web.config)中的 ConnectionStrings

c# - ASP.NET MVC 中的多个 CSS 文件包

asp.net-mvc - 你能模拟/ stub 内部属性吗?

c# - 获取点击了哪个链接按钮

asp.net - 如何限制对 Azure 上运行的网站部分的访问

asp.net-mvc - Node.Js 和 ASP.NET MVC 应用程序之间的通信

azure - 为什么 Az powershell 在简单的 "show policy definition"命令上返回此错误?