【问题标题】:Can't hit breakpoint in program.main Blazor Client wasm无法在 program.main Blazor 客户端 wasm 中命中断点
【发布时间】:2021-03-14 22:10:28
【问题描述】:

创建一个基本的 Blazor 应用程序,我正在尝试调试我的应用程序的 main/start 方法。 主要是检查我注入的对象,主要是从 appsettings.json 获取配置。

我还在 lauchSettings.json 中添加了用于浏览器调试的 json 设置,但没有成功。

"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"

我在 google 上查过,但与 Program.Main() 断点相关的解决方案并不多。 有什么建议吗?

public class Program
{
    public static async Task Main(string[] args)
    {

        var builder = WebAssemblyHostBuilder.CreateDefault(args);



        builder.RootComponents.Add<App>("#app");
        builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri("https://localhost:5001/") });
        builder.Services.AddScoped<DashboardDataService>();
        builder.Services.AddScoped<TrTradingSignalBotApiService>();
        builder.Services.AddTelerikBlazor();

        await builder.Build().RunAsync();
    }
}

【问题讨论】:

    标签: c# settings blazor main start-process


    【解决方案1】:

    更新:The documentation that describes this

    好的,这很难看,但大概你只希望它一次性完成,所以只需等待几秒钟 - 对我来说,在我的桌面上,2 秒就足够了 - 它给了调试器附加时间。一旦找到适合您的延迟,它就会起作用。

    注意,我无法让Debugger.IsAttachedDebugger.Break() 工作,所以你必须在编辑器中设置断点。

    将延迟封装在 #if DEBUG...#endif 中,以确保您不会在适当的位置释放。

    public class Program
    {
        public static async Task Main(string[] args)
        {
    #if DEBUG        
            await Task.Delay(2000);
    #endif
            var builder = WebAssemblyHostBuilder.CreateDefault(args);
    
            builder.RootComponents.Add<App>("#app");
            builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri("https://localhost:5001/") });
            builder.Services.AddScoped<DashboardDataService>();
            builder.Services.AddScoped<TrTradingSignalBotApiService>();
            builder.Services.AddTelerikBlazor();
    
            await builder.Build().RunAsync();
        }
    }
    

    【讨论】:

    • 我之前确实尝试过,但没有成功。现在又做了一次,它实际上正在工作。谢谢
    • 这个作品太棒了,谢谢!我不得不尝试更长的超时时间,但它仍然有效。
    • 没有为我修复它,即使超时时间延长了 10 倍(我在一台非常快的机器上)
    猜你喜欢
    • 2021-07-17
    • 1970-01-01
    • 2021-02-27
    • 2022-01-15
    • 1970-01-01
    • 2021-03-31
    • 2019-07-16
    • 2021-04-05
    • 2020-07-27
    相关资源
    最近更新 更多