我正在使用vscode。我無法除錯“獨立”(或“托管”)的 blazor wasm。
有很多這樣的問題,但它們是針對 RC、顯然為 .NET 6 修復的錯誤或顯然在 SDK 6.0.102 中修復的工具錯誤。
我閱讀了所有檔案。我懷疑這個問題是由于已知的熱多載兼容性錯誤而復雜化的。
我在最新的一切。我在 linux (ubuntu 20) 上使用鉻。
當我嘗試除錯時,我在彈出視窗中收到此錯誤:
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?如果有,請發布您的作業配置?
uj5u.com熱心網友回復:
我設法讓它與微軟的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用于客戶端,因為服務器可能已經在使用5000and 5001。
我發現 Edge 是一款不錯的瀏覽器。這也是一個不錯的選擇,因為除錯工具會在每次會話后關閉瀏覽器,所以如果我使用我喜歡的瀏覽器,它每次都會關閉。即使這些錯誤已修復,我想我仍會將 Edge 作為我的 blazor 的“除錯瀏覽器”。
除錯體驗并不完美:有時在開始除錯時它會說“看起來瀏覽器已經從舊的除錯會話運行。請在嘗試除錯之前關閉它,否則 VS Code 可能無法連接到它。” - 只需單擊“仍然除錯”。
我無法讓除錯和熱多載同時作業。我在 repo 或 docs 站點的某處讀到此方案尚不支持(但將在未來的補丁版本或 .NET 7 中提供)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/468273.html
標籤:C# asp.net 核心 调试 西装外套 blazor-webassembly
上一篇:Java 語言實作簡易版掃碼登錄
下一篇:如果提示為空,如何停止js腳本
