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

时间:2015-06-17 20:50:31

标签: asp.net asp.net-mvc azure azure-web-sites 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 =“生产”。

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

1 个答案:

答案 0 :(得分:1)

IIS是一个棘手的野兽,我们仍然在ASP.NET 5中完成这项工作。当您在IIS上运行时,我们会运行中间件管道,然后在没有处理请求的情况下回调到IIS本机模块。当您获得未被任何中间件处理的404时,它将重新进入IIS管道并触发IIS特定的错误页面。 UseStatusCodePagesWithReExecute中间件仍在运行,但到那时,IIS已经将标头和正文发送到客户端(在这种情况下是浏览器)。