【问题标题】:How to display errors with ASP.NET Core如何使用 ASP.NET Core 显示错误
【发布时间】:2014-08-25 03:43:42
【问题描述】:

我有一个使用 ASP.NET Core 玩的相当简单的网站。我正在从命令行运行应用程序,并且网站正在返回静态文件,但是当我尝试发出应该由 MVC 处理的请求时,我不断收到 500 个错误。我如何查看错误是什么?错误是显示到浏览器还是记录到控制台都没有关系,我只是想要一种方法来查看错误是什么。

【问题讨论】:

    标签: c# asp.net-core


    【解决方案1】:

    添加错误页面中间件如图here:

    app.UseDeveloperExceptionPage();
    

    【讨论】:

    【解决方案2】:

    beta8 更新:
    在 beta8 中,Microsoft 将名称更改为 UseDeveloperExceptionPage。所以如果你想使用ErrorPage,调用:

    app.UseDeveloperExceptionPage();
    

    这是相关Github issue的链接。
    ErrorPageOptions 与 beta6/7 中的相同。


    你可以使用

    app.UseErrorPage(ErrorPageOptions.ShowAll)
    

    直到 Asp.Net Mvc 的 beta5


    beta6 开始,ErrorPageOptions.ShowAll 已被删除。您现在可以使用不带参数的版本

    app.UseErrorPage();
    

    或创建一个 ErrorPageOptions 对象并通过设置 SourceCodeLineCount 指定要在错误周围显示多少行。

    app.UseErrorPage(new ErrorPageOptions() {SourceCodeLineCount = 100});
    

    其他信息

    他们删除了this commitErrorPageOptions 的多个属性。

    之前:

    public class ErrorPageOptions
    {
        private bool _defaultVisibility;
    
        private bool? _showExceptionDetails;
        private bool? _showSourceCode;
        private bool? _showQuery;
        private bool? _showCookies;
        private bool? _showHeaders;
        private bool? _showEnvironment;
        ...
    }
    

    之后:

    public class ErrorPageOptions
    {
        public int SourceCodeLineCount { get; set; }
        public IFileProvider FileProvider { get; set; }
        ...
    }
    

    所以现在你只能设置要打印多少行源代码。

    【讨论】:

    • 这必须再次更改,因为我使用的是 beta7,并且我有 showExceptionDetails、showSourceCode 等选项以及 SourceCodeLineCount
    • 你有吗?你确定你使用的是 beta7 吗?几天前我在 Github 上查看了它的源代码,并且确实只找到了我在这里发布的代码。但我还是会再看一遍
    • @user2736022 我再次检查,我在 beta7 中没有选项。您能否在使用 ErrorPageOptions 的地方发布一些代码以及包含哪些命名空间?
    • 在 beta 8 和 Visual Studio 2015 中,它现在默认添加到 Startup.cs if (env.IsDevelopment())
    【解决方案3】:

    如果您不关心您的错误详细信息会暴露给外界,您可以直接在浏览器中启用错误详细信息,而无需更改任何代码。 (仅在 IIS 8.5 中测试过):

    • IIS Manager 左侧Connections 部分,左键单击选择您的Site
    • 在右侧Feature View 打开Error Pages
    • 在最右边的Actions 部分,单击Edit Feature Settings
    • Error Responses中,选择第二个Detailed errors选项,然后选择Ok(或者如果您担心向世界公开内容,请从第三个选项开始,如果您可以打开本地浏览器.. . 即本地主机:...)

    这应该足以让您能够看到确切的错误... 重要提示:如果您必须使用中间的 Detailed errors 选项,请务必在调试后将其关闭问题。这可以为黑客提供闯入您的服务器所需的一切。

    【讨论】:

    • 这非常方便,您不必重新部署站点。
    【解决方案4】:

    如果向世界公开错误的详细信息并不重要,那么您可以在 web.config 中激活详细的错误页面。

    只需在位于您网站根文件夹的 web.config 文件的 <configuration> / <system.web> 中添加 <customErrors mode="Off"/>

    更详细的解释: How to Use Web.Config customErrors for ASP.NET

    这样做的好处是您不必重新部署您的网站

    【讨论】:

    • 这与 OP 的问题无关。他正在使用 .NET Core,而您的答案是 ASP.NET
    • 这也适用于 ASP.Net。 web.config 设置优先。不过我不会这样做,这似乎是一种不好的做法……或者至少,丑陋。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2019-10-21
    • 1970-01-01
    • 2013-10-03
    • 2020-11-23
    • 2019-09-26
    • 2020-05-29
    相关资源
    最近更新 更多