代码之家  ›  专栏  ›  技术社区  ›  ProfK

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

  •  0
  • ProfK  · 技术社区  · 7 年前

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

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

    因此,我仔细清理了发布文件夹(IIS中的网站指向该文件夹),并再次发布了应用程序,这次是在 Debug 配置。

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

    1 回复  |  直到 7 年前
        1
  •  3
  •   Set    7 年前

    Debug/Release 默认情况下,配置与 Development/Production 环境检查此项 Environments section Hosting settings 了解如何设置所需的环境。最简单的方法是指定 ASPNETCORE_ENVIRONMENT env变量。

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

    这是关于 WebHostDefaults.DetailedErrorsKey settings :

    启用时(或环境设置为开发时),应用程序将捕获详细的异常。

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

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

    有一个 good doc sectio n关于IIS上部署的应用程序疑难解答。除其他外,考虑启用 ASP.NET Core Module stdout logs 在web中。配置:

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

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

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

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

    WebHost.CreateDefaultBuilder(args)
           .CaptureStartupErrors(true)
    
    推荐文章