【问题标题】:Unable to display detailed startup error with Blazor无法使用 Blazor 显示详细的启动错误
【发布时间】:2020-05-13 06:12:31
【问题描述】:

在我的 Blazor 服务器应用程序中,其中一个注入服务将执行一些系统检查,并在检查失败时抛出异常。计划是使用这个异常来提醒程序员应用程序正确运行需要一定的条件。但是,Blazor 只是显示

错误:电路初始化失败。

在浏览器控制台中,找不到我的异常消息。此外,Visual Studio 在调试模式下使用默认中断设置不会中断我的异常,据说是因为 Blazor 捕获了我的异常。因此,到目前为止,我发现可以实际显示我的异常的唯一方法是将中断设置更改为“中断所有运行时异常”,但我认为这还不够好,因为该项目的未来程序员可能不知道.

那么有什么方法可以配置 Blazor 以显示启动异常详细信息或停止捕获我的异常?我试过了

services.AddServerSideBlazor(options => {
    options.DetailedErrors = true;
});

但它没有帮助。我认为这与我的情况无关。

【问题讨论】:

    标签: blazor blazor-server-side


    【解决方案1】:

    这样做的一种方法是在Startup.cs 文件中添加一些自定义代码,就在Configure 方法的末尾。到启动序列到此为止,您的所有服务都应该注册,包括您的测试服务。要在Configure 方法中访问,首先需要在方法签名中添加服务类型和变量名,然后在方法末尾调用服务上的方法。见下文:

    public void Configure(IApplicationBuilder app, ...other things,  ITestingService testService)
    {
        // all your other startups configs
    
        testService.RunTestMethods();
    }
    

    ITestingService 代表您的服务进行检查。 DI 框架将在 Configure 方法中获取您需要该服务并为您提供它的实例,然后您可以执行您需要的任何方法,抛出或传播异常并在需要时记录它们,等等。这里是如果你在 Configure 方法结束之前抛出异常,应用程序将无法启动,所以即使是控制台日志,也要确保你的日志记录在 CLI 中责骂开发人员需要更正某物。

    【讨论】:

    • 这是一种可能的方式;但是,就我而言,我实际上是在为其他程序员编写一个库来应用。如果他们知道应该添加这段代码,他们还不如一开始就满足条件。假设使用我的库的程序员只做注册服务,是否有可能实现我想要的?
    猜你喜欢
    • 2022-08-23
    • 1970-01-01
    • 2020-11-07
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多