我有一个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 =“生产”。
有什么想法吗?如果我能提供更多信息,请告诉我。
答案 0 :(得分:1)
IIS是一个棘手的野兽,我们仍然在ASP.NET 5中完成这项工作。当您在IIS上运行时,我们会运行中间件管道,然后在没有处理请求的情况下回调到IIS本机模块。当您获得未被任何中间件处理的404时,它将重新进入IIS管道并触发IIS特定的错误页面。 UseStatusCodePagesWithReExecute中间件仍在运行,但到那时,IIS已经将标头和正文发送到客户端(在这种情况下是浏览器)。