Blazor.Client启动无法访问Blazor.Server接口及Server启动客户端断点不命中问题
解决方案配置步骤
一、修复inspectUri启动报错
inspectUri是Blazor WebAssembly(.Client项目)专属的调试配置,不能放在.Server项目的launchSettings.json中,直接删除.Server配置里的inspectUri行即可解决该启动报错。
二、方案1:以Server项目为启动项,同时命中Client断点
这是官方推荐的调试方案,配置步骤如下:
- 先确认.Server项目已经添加了对.Client项目的项目引用
- 修复.Server项目
Startup.cs的路由冲突,删除下述冗余配置:
services.AddMvc(options => { options.EnableEndpointRouting = false; });
你后续已经配置了AddControllersWithViews、AddRazorPages和端点路由规则,这段配置会导致路由逻辑冲突,是之前无法命中断点的核心原因之一。
- 右键解决方案→属性→启动项目→选择「单启动项目」,下拉选中你的.Server项目,启动调试即可,此时Client端的断点可以正常命中。
注意:Blazor WASM调试仅支持Chrome/Edge内核浏览器,使用其他浏览器会出现断点无法命中的问题
三、方案2:单独启动Client项目可正常访问Server API
如果需要单独启动Client调试,按以下步骤配置:
- 首先确认Server项目运行地址为你配置的
https://localhost:5001;http://localhost:5000 - 打开.Client项目的
Program.cs,配置HttpClient默认基地址为Server的运行地址:
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:5001") });
- 给.Server项目配置跨域规则,在
Startup.cs的ConfigureServices方法中添加:
services.AddCors(options => { options.AddPolicy("DevAllow", policy => { policy.WithOrigins("http://localhost:xxxx", "https://localhost:yyyy") // 替换为你.Client项目实际的启动地址 .AllowAnyHeader() .AllowAnyMethod(); }); });
在Configure方法的app.UseRouting()之后、app.UseAuthentication()之前添加跨域中间件:
app.UseCors("DevAllow");
- 如果需要用多启动方案,右键解决方案→属性→启动项目→选择「多个启动项目」,将.Server和.Client的操作都设为「启动」,且调整顺序让.Server启动优先级高于.Client即可。
内容的提问来源于stack exchange,提问作者Martin Dempsey
相关产品推荐
相关产品推荐

