如何使用ASP.NET Core显示错误

run*_*ier 38 c# asp.net-core

我有一个相当简单的网站,我正在使用ASP.NET Core.我从命令行运行应用程序,网站返回静态文件,但当我尝试发出应由MVC处理的请求时,我一直收到500错误.我怎么看错误是什么?无论错误是显示在浏览器上还是记录到控制台都没关系,我只是想知道错误是什么.

Vic*_*aci 47

添加错误页面中间件作为显示在这里:

app.UseDeveloperExceptionPage();
Run Code Online (Sandbox Code Playgroud)

  • 从beta5-6开始删除此选项 (8认同)
  • `Microsoft.AspNet.Diagnostics`.请参阅https://github.com/aspnet/Diagnostics/tree/dev/src/Microsoft.AspNet.Diagnostics (3认同)
  • !!确保 app.UseDeveloperExceptionPage(); 位于 Startup.cs 的配置部分的非常开始! (2认同)

Dom*_*see 19

beta8的更新:
在beta8中,微软将名称更改为UseDeveloperExceptionPage.因此,如果要使用ErrorPage,请调用:

app.UseDeveloperExceptionPage();
Run Code Online (Sandbox Code Playgroud)

这是相关Github问题的链接.
ErrorPageOptions是相同的,如beta6/7.


您可以使用

app.UseErrorPage(ErrorPageOptions.ShowAll)
Run Code Online (Sandbox Code Playgroud)

直到Asp.Net Mvc的beta5.


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

app.UseErrorPage();
Run Code Online (Sandbox Code Playgroud)

或者创建一个ErrorPageOptions对象,并通过设置SourceCodeLineCount指定要显示的错误周围的行数.

app.UseErrorPage(new ErrorPageOptions() {SourceCodeLineCount = 100});
Run Code Online (Sandbox Code Playgroud)

附加信息

他们删除ErrorPageOptions此提交中的多个属性.

之前:

public class ErrorPageOptions
{
    private bool _defaultVisibility;

    private bool? _showExceptionDetails;
    private bool? _showSourceCode;
    private bool? _showQuery;
    private bool? _showCookies;
    private bool? _showHeaders;
    private bool? _showEnvironment;
    ...
}
Run Code Online (Sandbox Code Playgroud)

后:

public class ErrorPageOptions
{
    public int SourceCodeLineCount { get; set; }
    public IFileProvider FileProvider { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

  • 在beta 8和visual studio 2015中,默认情况下在Startup.cs中添加if(env.IsDevelopment()) (2认同)

Ser*_*gan 5

如果您不希望将错误详细信息公开,可以直接在浏览器中启用错误详细信息,而无需进行任何代码更改。(仅在中进行了测试IIS 8.5):

  • IIS Manager的左侧Connections部分中,单击鼠标左键选择您的Site
  • 在右侧Feature View打开Error Pages
  • 在最右边的Actions部分,单击Edit Feature Settings
  • 在中Error Responses,选择2nd,Detailed errors选项,然后Ok(或者,如果您担心将东西暴露给世界,请从3rd选项开始,如果您可以打开本地浏览器...即localhost:...)

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