我正在使用vscode。我不能"独立"调试。(或" hostd& quot;) blazor wasm.
有很多这样的问题,但它们是针对rc的,是针对。net 6明显修复的错误,或者是针对SDK 6.0.102明显修复的工具错误。
我读了所有的文档。我怀疑这个问题是由已知的热加载兼容性错误造成的。
我对每件事都很了解。我在linux (ubuntu 20)上使用chromium。
当我尝试调试时,我在弹出窗口中得到这个错误:
Unable to launch browser: "Failed to launch browser!
ERROR:sandbox_linux.cc(377)] InitializeSandbox() called with multiple threads in process gpu-process.
WARNING: Kernel has no file descriptor comparison support: Operation not permitted
ERROR:process_singleton_posix.cc(341)] Failed to create /home/username/.config/Code/User/workspaceStorage/4208cd9cd69c4fe2a941aed538319caa/ms-vscode.js-debug/.profile/SingletonLock: Permission denied (13)
ERROR:chrome_browser_main.cc(1432)] Failed to create a ProcessSingleton for your profile directory. This means that running multiple instances would start multiple browser processes rather than opening a new window in the existing process. Aborting now to avoid profile corruption.
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
这个错误是没有帮助的,因为我为那个目录做了chmod 777
,但它仍然抱怨权限。我也得到了其他错误,同样是隐晦的。
我想知道这是否可能,因为在拖网搜索了数十个SO问题和回购问题之后,我找不到任何声称有工作设置并可以显示工作配置的人。
所以:有没有人真正设法得到这个工作:blazor(独立,但托管也很好),vscode,热重载,linux?如果你有,请发布你的工作配置?
我成功地让它在微软的Edge上工作浏览器。
虽然我在linux上使用VSCode,但它应该与Windows/Mac上的Visual Studio相似,因为我相信底层基于roslyn的工具是相同的。
更新依赖关系确保你使用的是最新的SDK版本:6.0.202。使用dotnet --version
检查
- 从这里获取二进制文件(linux, mac, windows)
- 如果你使用的是linux,你可以1)使用deb/rpm二进制文件,或者2)包管理器选项(对于debian/ubuntu):
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-stable.list' sudo rm microsoft.gpg sudo apt update && sudo apt install microsoft-edge-stable
为"单机"更新配置项目
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模板生成的代码(只是一个例子,使用您的服务器地址):
//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/") });
测试在blazor项目中设置一些断点,然后按F5。
指出我使用端口6000
和6001
为客户端,因为服务器可能已经使用5000
和5001
。
我发现Edge是一个不错的浏览器。这也是一个很好的选择,因为调试工具在每次会话后都会关闭浏览器,所以如果我使用的是我喜欢的浏览器,那么每次都会关闭浏览器。即使这些错误被修复,我想我还是会把Edge作为我的"调试浏览器"。blazor。
调试体验并不完美:有时当开始调试时,它会显示"看起来浏览器已经从旧的调试会话中运行了"。请在调试前关闭它,否则VS Code可能无法连接到它。-只需点击"调试无论如何"
我没能让调试和热加载同时工作。我在repo或docs网站上读到这个场景还不支持(但将在未来的补丁版本或。net 7中)。