即使使用调试配置发布,错误页面也没有详细信息

No detail on error page even if published with Debug configuration

我有一个 MVC Core 应用程序,在 VS 和 IIS Express 中的调试模式下完美运行 运行。然而,当我在 Release 配置下发布到 IIS 10 时,单击 Login link 时发生错误。该站点显示完全无用的默认错误页面,该页面作为 MVC 应用程序的 VS 项目模板的一部分出现。此页面中唯一有用的信息是出现错误,并且:

Swapping to Development environment will display more detailed information about the error that occurred.

所以我小心清理了 IIS 中网站指向的 publish 文件夹,并再次发布了应用程序,这次是在 Debug 配置下。

但我仍然得到完全相同的无用错误页面。这是 IIS 的问题,还是我做错了什么?

Debug/Release 配置默认与 Development/Production 环境无关。检查此 Environments section and Hosting settings 以了解如何设置所需的环境。最简单的方法是指定 ASPNETCORE_ENVIRONMENT 环境变量。

关于切换到开发环境将显示有关发生的错误的更多详细信息。

这大约是 WebHostDefaults.DetailedErrorsKey settings:

When enabled (or when the Environment is set to Development), the app captures detailed exceptions.

您可以通过以下方式明确启用它:

WebHost.CreateDefaultBuilder(args)
       .UseSetting(WebHostDefaults.DetailedErrorsKey, "true")

web.config中有一个good doc section about troubleshooting app deployed on IIS. Among other consider to enable ASP.NET Core Module stdout logs:

<aspNetCore processPath="dotnet"
            arguments=".\MyApp.dll"
            stdoutLogEnabled="true"
            stdoutLogFile=".\logs\stdout">

另外,对于详细的异常视图,您可以启用 Developer exception page。请记住,好的做法(出于安全原因)是为 Development env 设置此页面:

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}

一般来说最后一个(屁股似乎不是你的情况),你也可以通过 captureStartupErrors setting:

捕获启动错误
WebHost.CreateDefaultBuilder(args)
       .CaptureStartupErrors(true)