首页 > 解决方案 > 无法在 program.main Blazor 客户端 wasm 中命中断点

问题描述

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

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

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

我已经检查了谷歌,但与 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#settingsblazormainstart-process

解决方案


更新:描述这个的文档

好的,这很难看,但大概您只希望它一次性使用,所以只需等待几秒钟 - 对我来说,在我的桌面上,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();
    }
}

推荐阅读