更深入的挖掘发现,有非Blazor特定的.NET Core方法可以打开详细错误,也有Blazor特定的方法:
现代方法
下面我详细介绍的方法是从.NET 2.1时代开始的,事情从那时起已经有了很大的改进。
Tyson Gibby的答案现在是一种更好的处理方法,所以我已经将其更改为被接受的答案。
我保留了下面的两种方法,供那些需要早期版本Blazor答案的人参考。
[过时]打开详细错误的一般.NET Core方法:
有很多种方法可以获取详细错误,如
.NET Core文档中所讨论的,但我最终使用了
详细错误设置。
WebHost.CreateDefaultBuilder(args).UseSetting(WebHostDefaults.DetailedErrorsKey, "true")
还有开发环境设置:
WebHost.CreateDefaultBuilder(args).UseEnvironment(Environments.Development)
这两个都在Program.cs中使用:
如果你正在使用旧的(
并最终将被弃用 IWebHostBuilder
方法),它看起来像这样:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseSetting(WebHostDefaults.DetailedErrorsKey, "true")
.UseStartup<Startup>();
如果你正在使用较新的
IHostBuilder
方法,这是在 Core 2.1 中引入的,它看起来像这样:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseStartup<Startup>()
.UseSetting(WebHostDefaults.DetailedErrorsKey, "true")
});
我一旦设置好了,就对我那个出错的 Blazor 代码有了更多的细节了。
[已过时] 一个特定于 Blazor 的方法:
打开详细错误信息的另一种方法 也可以在这个答案中找到,其中包括以下代码:
services.AddServerSideBlazor().AddCircuitOptions(options => { options.DetailedErrors = true; });
这种方法可以进一步扩展,以包括检查代码是否在开发环境中运行。
services.AddServerSideBlazor().AddCircuitOptions(o =>
{
o.DetailedErrors = _env.IsDevelopment();
});
如下所示:
由 @Eonasdan 的回答突出显示的部分
IHostBuilder
没有.UseSetting
方法。 - BrainSlugs83