【问题标题】:How to set the 'web.config' file to show the full error message (.NET Core 2.1)如何设置“web.config”文件以显示完整的错误消息(.NET Core 2.1)
【发布时间】:2019-05-30 14:34:24
【问题描述】:

我在IIS 上托管了我的 ASP.NET Core 应用程序(使用在文件夹中发布的方法)。我尝试创建自己的 web.config 文件以查看客户端的详细错误消息。所以我添加了文件 web.config:

<configuration>
    <system.web>
        <customErrors mode="Off" />
    </system.web>
    <system.webServer>
        <httpErrors errorMode="Detailed" />
    </system.webServer>
</configuration>

我重新启动 IIS 后,什么也没发生。客户端仍然收到默认错误:

我能否使用文件 web.config 以某种方式获取有关错误的其他信息?

【问题讨论】:

  • 请注意,system.web 仅适用于 ASP.NET,不适用于 ASP.NET Core,system.webServer 适用于 IIS。它们都不是你应该使用的,就像上面给出的答案一样。

标签: asp.net-core web-config iis-10


【解决方案1】:

web.config

<system.webServer>
    <httpErrors errorMode="Detailed" />
    <aspNetCore processPath="dotnet">
        <environmentVariables>
            <environmentVariable name="ASPNETCORE_DETAILEDERRORS" value="true" />
        </environmentVariables>
    </aspNetCore>
</system.webServer>

【讨论】:

  • 解释一下。例如,another answer 声称它不起作用。请通过editing your answer 回复,而不是在 cmets 中(without "Edit:"、"Update:" 或类似的 - 答案应该看起来像是今天写的)。
【解决方案2】:

您可以在 Startup.cs 文件中配置它。默认情况下,它只在开发模式下显示开发者异常页面:

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}
else
{
    app.UseExceptionHandler("/Home/Error");
}

如果您仅将此部分替换为 app.UseDeveloperExceptionPage();,它将始终显示详细的错误消息。

您可以在此处阅读更多信息: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling?view=aspnetcore-2.1

【讨论】:

  • 是的,我知道。但我有一个特定情况,我无法更改应用程序中的任何 .cs 文件。例如,您可以在 launchSettings.json 中添加 "nativeDebugging": true ,当您在 Visual Studio 中调试应用程序时,DeveloperExceptionPage 将自动打开。我可以以某种方式打开此选项,只使用 web.config 吗?
  • 如果你检查链接,你会看到“ASP.NET Core 在应用程序启动时读取环境变量 ASPNETCORE_ENVIRONMENT”,所以如果你在命令行中 set ASPNETCORE_ENVIRONMENT=Development 它应该可以工作。
【解决方案3】:

对我来说,启用 ASPNETCORE_DETAILEDERRORS 没有任何作用,但更改 ASPNETCORE_ENVIRONMENT 有效:

<environmentVariables>
  <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>

更多信息:Enable the Developer Exception Page

【讨论】:

    【解决方案4】:

    web.conf

    <system.webServer>
      <httpErrors errorMode="Detailed" />
      <aspNetCore processPath="dotnet" arguments=".\DocExpressManager.Web.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">
        <environmentVariables>
          <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
          <environmentVariable name="ASPNETCORE_DETAILEDERRORS" value="true" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2012-07-24
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多