我设法让它与微软一起工作Edge浏览器。
虽然我在 Linux 上使用 VSCode,但它对于 Windows / Mac 上的 Visual Studio 应该类似,因为我相信基于 Roslyn 的底层工具是相同的。
更新依赖项
确保您使用的是最新的 SDK 版本:6.0.202。检查使用dotnet --version
.
安装边缘
更新“独立”项目的配置
MyProject/Properties/launchSettings.json
:
{
"profiles": {
"Standalone": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:6000;http://localhost:6001", // <------
"environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }
}
}
}
MyProject/.vscode/launch.json
:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch and Debug Standalone Blazor WebAssembly App",
"type": "blazorwasm",
"request": "launch",
"browser": "edge", // <------
"url": "http://localhost:6001" // <------
}
]
}
在服务器项目中启用 CORS
配置服务时:
if(_environment.IsDevelopment()) {
// allow all localhost ports
services.AddCors(o => o.AddPolicy("BlazorCorsPolicy", b => b.SetIsOriginAllowed(s => new Uri(s).IsLoopback)));
// or, explicitly allow client's address only
//services.AddCors(o => o.AddPolicy("BlazorCorsPolicy", b => b.WithOrigins("http://localhost:6001")));
}
else {
//...
}
配置中间件管道时:
app.UseRouting();
app.UseCors("BlazorCorsPolicy"); // <------
app.UseAuthentication();
app.UseAuthorization();
在 blazor 项目中设置服务器地址
更新 blazor 模板生成的代码(仅作为示例,使用your服务器地址):
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:5001/api/v1/") });
Test
Set some breakpoints in the blazor project, then press F5.
Notes
我使用了端口6000
and 6001
对于客户端,因为服务器可能已经在使用5000
and 5001
.
我发现 Edge 是一个不错的浏览器。这也是一个不错的选择,因为调试工具会在每次会话后关闭浏览器,因此如果我使用我喜欢的浏览器,它每次都会关闭。即使这些错误得到修复,我想我也会保留 Edge 作为 blazor 的“调试浏览器”。
调试体验并不完美:有时在开始调试时,它会显示“浏览器似乎已经从旧的调试会话运行。请在尝试调试之前将其关闭,否则 VS Code 可能无法连接到它。” - 只需单击“无论如何调试”。
我无法同时进行调试和热重载。我在存储库或文档网站上的某个地方读到,尚未支持此场景(但将在未来的补丁版本或 .NET 7 中)。