Ladění ASP.NET Core Blazor WebAssembly
Blazor WebAssemblyAplikace je možné ladit pomocí vývojářových nástrojů prohlížeče v Chromium prohlížečích (Edge/Chrome). Aplikaci můžete také ladit pomocí následujících integrovaných vývojových prostředí (ICE):
- Visual Studio
- Visual Studio pro Mac
- Visual Studio Code
Mezi dostupné scénáře patří:
- Nastavte a odeberte zarážky.
- Spusťte aplikaci s podporou ladění v prostředích ID.
- Kód si projdete jedním krokem.
- Obnovte spouštění kódu pomocí klávesové zkratky v prostředích ID.
- V okně Místní hodnoty sledujte hodnoty místních proměnných.
- Podívejte se na zásobník volání, včetně řetězců volání mezi JavaScriptem a .NET.
Pro teď nemůžete:
- Přerušení u neošetřených výjimek.
- Než bude spuštěn ladicí proxy server, stiskněte během spouštění aplikace zarážky. To zahrnuje zarážky v a zarážky v metodách životního cyklu komponent, které jsou načteny první stránkou
Program.cspožadovanouOnInitialized{Async}z aplikace. - Ladění v jiných než místních scénářích (například Subsystém Windows pro Linux (WSL) nebo Visual Studio Codespaces).
- Automaticky znovu sestaví
Serverback-endové aplikace hostovaného řešení během ladění, například spuštěním Blazor WebAssembly aplikace pomocídotnet watch run.
Požadavky
Ladění vyžaduje některý z následujících prohlížečů:
- Google Chrome (verze 70 nebo novější) (výchozí)
- Microsoft Edge (verze 80 nebo novější)
Ujistěte se, že brány firewall nebo proxy servery neblokují komunikaci s ladicím proxy serverem ( NodeJS proces). Další informace najdete v části Konfigurace brány firewall.
Visual Studio Code uživatelé vyžadují následující rozšíření:
- C# pro Visual Studio Code rozšíření
- Blazor Rozšíření ladění WASM (při použití jazyka C# pro Visual Studio Code verze 1.23.9 nebo novější)
Po otevření projektu v VS Code se může zobrazit oznámení, že k povolení ladění se vyžaduje další nastavení. V případě potřeby nainstalujte požadovaná rozšíření z Visual Studio Marketplace. Pokud chcete zkontrolovat nainstalovaná rozšíření, otevřete na řádku nabídek Zobrazit rozšíření nebo vyberte ikonu Rozšíření na > bočním panelu Aktivita.
Visual Studio pro Mac vyžaduje verzi 8.8 (build 1532) nebo novější:
- Nainstalujte nejnovější verzi služby Visual Studio pro Mac výběrem tlačítka Stáhnout Visual Studio pro Mac v Microsoftu: Visual Studio pro Mac.
- Vyberte kanál Preview v rámci Visual Studio. Další informace najdete v tématu Instalace verze Preview Visual Studio pro Mac.
Poznámka
Apple Safari v macOS se v současné době nepodporuje.
Ladění samostatné Blazor WebAssembly aplikace
Pokud chcete povolit ladění pro existující aplikaci, aktualizujte soubor v projektu po spuštění tak, aby v každém profilu spuštění zahrnoval Blazor WebAssembly launchSettings.json následující inspectUri vlastnost:
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
Po aktualizaci by launchSettings.json měl soubor vypadat podobně jako v následujícím příkladu:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:50454",
"sslPort": 44399
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"BlazorApp1.Server": {
"commandName": "Project",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Vlastnost inspectUri :
- Umožňuje integrovaného vývojového prostředí zjistit, že aplikace je Blazor WebAssembly aplikace.
- Instruuje infrastrukturu ladění skriptů pro připojení k prohlížeči prostřednictvím Blazor ladicího proxy serveru.
Rozhraní poskytuje zástupné hodnoty pro protokol WebSocket ( ), hostitele ( ), port ( ) a identifikátor URI inspektoru ve wsProtocol url.hostname url.port browserInspectUri spuštěném prohlížeči ( ).
Ladění aplikace Blazor WebAssembly v Visual Studio:
Vytvořte nové hostované Blazor WebAssembly řešení.
Když je
Serverprojekt vybraný v Průzkumník řešení, stisknutím klávesy F5 spusťte aplikaci v ladicím programu.Poznámka
Při ladění pomocí prohlížeče založeného na Chromium, jako je Google Chrome nebo Microsoft Edge, se může otevřít nové okno prohlížeče s odděleným profilem pro relaci ladění místo otevření karty v existujícím okně prohlížeče s profilem uživatele. Pokud je ladění s profilem uživatele povinné, přistupte k jednomu z následujících přístupů:
- Před stisknutím klávesy F5 zavřete všechny otevřené instance prohlížeče a spusťte ladění.
- Nakonfigurujte Visual Studio, aby se prohlížeč spouštěl s profilem uživatele. Další informace o tomto přístupu najdete v tématu Ladění WASM ve VS spustí Edge s odděleným adresářem uživatelských dat Blazor (dotnet/aspnetcore #20915).
Poznámka
Spuštění bez ladění (Ctrl + F5) se nepodporuje. Když se aplikace spustí v konfiguraci ladění, režie ladění vždy vede k malému snížení výkonu.
V aplikaci
*Client*nastavte zarážku na řádkucurrentCount++;vPages/Counter.razor.V prohlížeči přejděte na
Counterstránku a výběrem tlačítka Click me (Klikněte na mě) přejděte na zarážku.V Visual Studio zkontrolujte hodnotu pole v
currentCountokně Místní hodnoty.Pokračujte v provádění stisknutím klávesy F5.
Při ladění Blazor WebAssembly aplikace můžete také ladit kód serveru:
- Nastavte zarážku na
Pages/FetchData.razorstránce v OnInitializedAsync . - Nastavte zarážku v
WeatherForecastControllermetoděGetv akci. - Přejděte na stránku a těsně před tím, než vydá požadavek HTTP na server, přejděte k první
Fetch DataFetchDatazarážce v komponentě. - Stisknutím klávesy F5 pokračujte v provádění a potom na serveru v nástroji stiskněte zarážku.
WeatherForecastController - Znovu stiskněte klávesu F5, abyste mohli pokračovat v provádění a podívat se na tabulku předpovědi počasí vykreslenou v prohlížeči.
Poznámka
Během spouštění aplikace se zarážky nenarazí před spuštěním ladicího proxy serveru. To zahrnuje zarážky v a zarážky v metodách životního cyklu komponent, které jsou načteny první stránkou Program.cs požadovanou OnInitialized{Async} z aplikace.
Pokud je aplikace hostovaná v jiné základní cestě aplikace než , aktualizujte následující vlastnosti v souboru tak, aby odrážely základní cestu / Properties/launchSettings.json aplikace:
applicationUrl:"iisSettings": { ... "iisExpress": { "applicationUrl": "http://localhost:{INSECURE PORT}/{APP BASE PATH}/", "sslPort": {SECURE PORT} } },inspectUrikaždého profilu:"profiles": { ... "{PROFILE 1, 2, ... N}": { ... "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/{APP BASE PATH}/_framework/debug/ws-proxy?browser={browserInspectUri}", ... } }
Zástupné symboly v předchozích nastaveních:
{INSECURE PORT}: Nezabezpečený port. Ve výchozím nastavení je k dispozici náhodná hodnota, ale je povolen vlastní port.{APP BASE PATH}: Základní cesta aplikace.{SECURE PORT}: Zabezpečený port. Ve výchozím nastavení je k dispozici náhodná hodnota, ale je povolen vlastní port.{PROFILE 1, 2, ... N}: Profily nastavení spuštění. Aplikace obvykle ve výchozím nastavení určuje více než jeden profil (například profil pro IIS Express a profil projektu, který používá Kestrel server).
V následujících příkladech je aplikace hostovaná na adrese se základní cestou /OAT aplikace nakonfigurovanou jako wwwroot/index.html <base href="/OAT/"> :
"applicationUrl": "http://localhost:{INSECURE PORT}/OAT/",
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/OAT/_framework/debug/ws-proxy?browser={browserInspectUri}",
Informace o použití vlastní základní cesty aplikace pro Blazor WebAssembly aplikace najdete v tématu Hostování a nasazení ASP.NET Core Blazor .
Ladění v prohlížeči
Pokyny v této části se vztahují na Google Chrome a Microsoft Edge běžící na Windows.
Spusťte sestavení aplikace pro ladění ve vývojovém prostředí.
Spusťte prohlížeč a přejděte na adresu URL aplikace (například
https://localhost:7268).V prohlížeči se pokuste spustit vzdálené ladění stisknutím kláves Shift + Alt + d.
Prohlížeč musí běžet s povoleným vzdáleným laděním, což není výchozí nastavení. Pokud je vzdálené ladění zakázané, zobrazí se chybová stránka na kartě prohlížeče, která se nepodařilo najít, a zobrazí se pokyny ke spuštění prohlížeče s otevřeným portem ladění. Postupujte podle pokynů pro váš prohlížeč. Otevře se nové okno prohlížeče. Zavřete předchozí okno prohlížeče.
Po spuštění prohlížeče s povoleným vzdáleným laděním otevře klávesová zkratka ladění v předchozím kroku novou kartu ladicího programu.
Po chvíli se na kartě Zdroje zobrazí seznam sestavení .NET aplikace v rámci
file://uzlu.V kódu komponenty ( souborech) a souborech kódu C# ( ) se při provádění kódu nastaví
.razor.cszarážky. Po zarážce můžete kódem v jednom kroku(F10)normálně pokračovat v provádění kódu nebo pokračovat(F8).
Blazor poskytuje ladicí proxy server, který implementuje protokol Chrome DevTools a o rozšíření protokolu o . Informace specifické pro NET. Při stisknutí klávesové zkratky pro ladění Blazor nasádá Nástroj DevTools pro Chrome na proxy server. Proxy server se připojí k oknu prohlížeče, které chcete ladit (proto je potřeba povolit vzdálené ladění).
Zdrojové mapy prohlížeče
Zdrojové mapy prohlížeče umožňují prohlížeči mapovat zkompilované soubory zpět na původní zdrojové soubory a běžně se používají pro ladění na straně klienta. V současné Blazor době se ale jazyk C# nemapuje přímo na JavaScript/WASM. Místo toho Blazor interpretuje IL v prohlížeči, takže zdrojové mapy nejsou relevantní.
Konfigurace brány firewall
Pokud brána firewall blokuje komunikaci s ladicím proxy serverem, vytvořte pravidlo výjimky brány firewall, které umožňuje komunikaci mezi prohlížečem a NodeJS procesem.
Upozornění
Úprava konfigurace brány firewall musí být provedena opatrně, aby se zabránilo vytváření ohrožení zabezpečení. Pečlivě použijte pokyny k zabezpečení, dodržujte osvědčené postupy zabezpečení a respektujte upozornění vydaná výrobcem brány firewall.
Povolení otevřené komunikace s NodeJS tímto procesem:
- Otevře server Node pro jakékoli připojení v závislosti na možnostech a konfiguraci brány firewall.
- V závislosti na vaší síti může být riziko.
- Doporučuje se jenom na vývojářských počítačích.
Pokud je to možné, povolte pouze otevřenou komunikaci NodeJS s procesem v důvěryhodných nebo privátních sítích.
Pokyny Windows brány firewall najdete v tématu Vytvoření příchozího programu nebo pravidla služby. Další informace najdete v článcích Windows Defender firewall s pokročilým zabezpečením a v souvisejících článcích v sadě dokumentace Windows Firewall.
Řešení potíží
Pokud dochází k chybám, můžou vám pomoct následující tipy:
- Na kartě Ladicí program otevřete v prohlížeči nástroje pro vývojáře. Spuštěním příkazu v konzole
localStorage.clear()odeberte všechny zarážky. - Ověřte, že jste nainstalovali a důvěřoval certifikátu ASP.NET Core HTTPS. Další informace naleznete v tématu Vynutilit HTTPS v ASP.NET Core.
- Visual Studio možnost Povolit ladění JavaScriptu pro ASP.NET (Chrome, Edge a IE) v části Nástroje > Možnosti > Ladění > Obecné. Toto je výchozí nastavení pro Visual Studio. Pokud ladění nefunguje, ověřte, že je vybraná možnost .
- Pokud vaše prostředí používá proxy server HTTP, ujistěte se, že je
localhostsoučástí nastavení obejití proxy serveru. To lze provést nastavením proměnnéNO_PROXYprostředí v:- Soubor
launchSettings.jsonpro projekt. - Na úrovni proměnných uživatelského nebo systémového prostředí, aby bylo možné je použít pro všechny aplikace. Při použití proměnné prostředí restartujte Visual Studio, aby se změna projeví.
- Soubor
- Ujistěte se, že brány firewall nebo proxy servery neblokují komunikaci s ladicím proxy serverem (
NodeJSproces). Další informace najdete v části Konfigurace brány firewall .
Zarážky OnInitialized{Async} nejsou v neúspěšných.
BlazorSpuštění ladicího proxy serveru pro rozhraní trvá krátkou dobu, takže zarážky v OnInitialized{Async} metodách životního cyklu nemusí být k dispozice. Doporučujeme přidat zpoždění na začátek těla metody a umožnit tak spuštění ladicího proxy serveru nějakou dobu, než se zarážka zasáhne. Můžete zahrnout zpoždění na základě if direktivy kompilátoru , aby se zajistilo, že zpoždění není k dispozici pro sestavení pro vydání aplikace.
protected override void OnInitialized()
{
#if DEBUG
Thread.Sleep(10000);
#endif
...
}
protected override async Task OnInitializedAsync()
{
#if DEBUG
await Task.Delay(10000);
#endif
...
}
časový limit Visual Studio (Windows)
pokud Visual Studio vyvolá výjimku, že se ladicímu adaptéru nepovedlo spustit zmínku o tom, že byl dosažen časový limit, můžete nastavit časový limit pomocí nastavení registru:
VsRegEdit.exe set "<VSInstallFolder>" HKCU JSDebugger\Options\Debugging "BlazorTimeoutInMilliseconds" dword {TIMEOUT}
{TIMEOUT}Zástupný symbol v předchozím příkazu je v milisekundách. Například jedna minuta je přiřazena jako 60000 .
Blazor WebAssemblyaplikace se dají ladit pomocí nástrojů pro vývoj v prohlížeči v Chromiumch prohlížečích (Edge/Chrome). Aplikaci můžete také ladit pomocí následujících integrovaných vývojových prostředí (IDEs):
- Visual Studio
- Visual Studio pro Mac
- Visual Studio Code
K dispozici jsou tyto scénáře:
- Nastavení a odebrání zarážek.
- Spusťte aplikaci s podporou ladění v prostředích IDEs.
- Jednoduchý krok kódu.
- Pokračuje v provádění kódu pomocí klávesové zkratky v prostředích IDEs.
- V okně místní hodnoty Sledujte hodnoty místních proměnných.
- Podívejte se do zásobníku volání, včetně řetězců volání mezi JavaScript a .NET.
Teď nemůžete:
- Přerušit při neošetřených výjimkách.
- Zarážky volání během spouštění aplikace před spuštěním ladicího proxy serveru. To zahrnuje zarážky v
Program.csa zarážky vOnInitialized{Async}metodách životního cyklu pro součásti, které jsou načteny první stránkou požadovanou z aplikace. - ladění v jiných než místních scénářích (například Subsystém Windows pro Linux (WSL) nebo Visual Studio Codespaces).
- Automaticky znovu sestavit back-end
*Server*aplikaci hostovaného Blazor WebAssembly řešení během ladění, například spuštěním aplikace pomocídotnet watch run.
Požadavky
Ladění vyžaduje některý z následujících prohlížečů:
- Google Chrome (verze 70 nebo novější) (výchozí)
- Microsoft Edge (verze 80 nebo novější)
Zajistěte, aby brány firewall nebo proxy neblokovaly komunikaci s ladicím proxy serverem ( NodeJS proces). Další informace najdete v části Konfigurace brány firewall .
Visual Studio Code uživatelé vyžadují následující rozšíření:
- rozšíření C# pro Visual Studio Code
- Blazor rozšíření ladění WASM (při použití rozšíření C# pro Visual Studio Code verze 1.23.9 nebo novější)
po otevření projektu v VS Code se může zobrazit oznámení, že k povolení ladění je potřeba další nastavení. v případě vyžádání nainstalujte požadovaná rozšíření z webu Visual Studio Marketplace. Pokud chcete zkontrolovat nainstalovaná rozšíření, otevřete > rozšíření zobrazení z řádku nabídek nebo vyberte ikonu rozšíření na postranním panelu aktivita .
Visual Studio pro Mac vyžaduje verzi 8,8 (build 1532) nebo novější:
- nejnovější verzi Visual Studio pro Mac nainstalujete tak, že vyberete tlačítko stáhnout Visual Studio pro Mac v Microsoft: Visual Studio pro Mac.
- Vyberte kanál verze Preview v rámci Visual Studio. další informace najdete v tématu instalace verze preview Visual Studio pro Mac.
Poznámka
Apple Safari na macOS se v tuto chvíli nepodporuje.
Ladění samostatné Blazor WebAssembly aplikace
Chcete-li povolit ladění pro existující Blazor WebAssembly aplikaci, aktualizujte launchSettings.json soubor v spouštěném projektu tak, aby do inspectUri každého spouštěcího profilu zahrnoval následující vlastnost:
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
Po aktualizaci launchSettings.json by měl soubor vypadat podobně jako v následujícím příkladu:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:50454",
"sslPort": 44399
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"BlazorApp1.Server": {
"commandName": "Project",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
inspectUriVlastnost:
- Umožňuje rozhraní IDE zjistit, že aplikace je Blazor WebAssembly aplikace.
- Dá pokyn k tomu, aby se infrastruktura ladění skriptů připojovala k prohlížeči prostřednictvím Blazor ladicího proxy serveru.
V tomto rozhraní jsou k dispozici zástupné hodnoty pro identifikátor URI protokolu WebSocket ( wsProtocol ), hostitele ( url.hostname ), portu ( url.port ) a identifikátor URI pro inspektory v otevřeném prohlížeči ( browserInspectUri ).
Ladění Blazor WebAssembly aplikace v Visual Studio:
Vytvořte nové hostované Blazor WebAssembly řešení.
Po
Servervýběru projektu v Průzkumník řešení stiskněte klávesu F5 a spusťte aplikaci v ladicím programu.Poznámka
při ladění pomocí Chromiumho prohlížeče, jako je Google Chrome nebo Microsoft Edge, se nové okno prohlížeče může otevřít s odděleným profilem pro relaci ladění namísto otevření karty v existujícím okně prohlížeče s profilem uživatele. Pokud je nutné ladit s profilem uživatele, proveďte jeden z následujících přístupů:
- Před stisknutím klávesy F5 zavřete všechny otevřené instance prohlížeče a spusťte ladění.
- nakonfigurujte Visual Studio pro spuštění prohlížeče s profilem uživatele. Další informace o tomto přístupu naleznete v tématu Blazor ladění WASM v vs-The-Edge s odděleným datovým adresářem uživatele (dotnet/aspnetcore #20915).
Poznámka
Spuštění bez ladění (CTRL + F5) není podporováno. Když je aplikace spuštěna v konfiguraci ladění, režie ladění vždy vede k omezení malého výkonu.
V
*Client*aplikaci nastavte zarážku nacurrentCount++;řádku vPages/Counter.razor.V prohlížeči přejděte na
Counterstránku a kliknutím na tlačítko klikněte na tlačítko Zobrazit zarážku.v Visual Studio zkontrolujte hodnotu
currentCountpole v okně místní hodnoty.Pokračujte v provádění stisknutím klávesy F5 .
Při ladění Blazor WebAssembly aplikace můžete také ladit kód serveru:
- Nastavte zarážku na
Pages/FetchData.razorstránce v OnInitializedAsync . - Nastavte zarážku v
WeatherForecastControllerGetmetodě Action. - Přejděte na
Fetch Datastránku a vyberte první zarážku vFetchDatasoučásti těsně předtím, než VYDÁ požadavek HTTP na server. - Stisknutím klávesy F5 pokračujte v provádění a potom stiskněte zarážku na serveru v
WeatherForecastController. - Opakovaným stisknutím klávesy F5 můžete pokračovat v provádění a zobrazit tabulku předpovědi počasí vygenerovanou v prohlížeči.
Poznámka
Zarážky se během spouštění aplikace neprojeví před spuštěním ladicího proxy serveru. To zahrnuje zarážky v Program.cs a zarážky v OnInitialized{Async} metodách životního cyklu pro součásti, které jsou načteny první stránkou požadovanou z aplikace.
Pokud je aplikace hostovaná v jiné základní cestě aplikace než / , aktualizujte následující vlastnosti v nástroji Properties/launchSettings.json tak, aby odrážely základní cestu aplikace:
applicationUrl:"iisSettings": { ... "iisExpress": { "applicationUrl": "http://localhost:{INSECURE PORT}/{APP BASE PATH}/", "sslPort": {SECURE PORT} } },inspectUrikaždý profil:"profiles": { ... "{PROFILE 1, 2, ... N}": { ... "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/{APP BASE PATH}/_framework/debug/ws-proxy?browser={browserInspectUri}", ... } }
Zástupné symboly v předchozích nastaveních:
{INSECURE PORT}: Nezabezpečený port. Ve výchozím nastavení je k dispozici náhodná hodnota, ale je povolený vlastní port.{APP BASE PATH}: Základní cesta aplikace.{SECURE PORT}: Zabezpečený port. Ve výchozím nastavení je k dispozici náhodná hodnota, ale je povolený vlastní port.{PROFILE 1, 2, ... N}: Profily nastavení spuštění. aplikace obvykle ve výchozím nastavení určuje více než jeden profil (například profil pro IIS Express a profil projektu, který je používán Kestrel serverem).
V následujících příkladech je aplikace hostovaná na základě /OAT základní cesty aplikace nakonfigurované v wwwroot/index.html podobě <base href="/OAT/"> :
"applicationUrl": "http://localhost:{INSECURE PORT}/OAT/",
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/OAT/_framework/debug/ws-proxy?browser={browserInspectUri}",
Informace o tom, jak používat vlastní základní cestu aplikace pro Blazor WebAssembly aplikace, najdete v tématu Hostování a nasazení ASP.NET Core Blazor .
Ladění v prohlížeči
Pokyny v této části se vztahují na Google Chrome a Microsoft Edge běžící na Windows.
Spusťte sestavení aplikace pro ladění ve vývojovém prostředí.
Spusťte prohlížeč a přejděte na adresu URL aplikace (například
https://localhost:5001).V prohlížeči se pokuste spustit vzdálené ladění stisknutím kláves Shift + Alt + d.
Prohlížeč musí běžet s povoleným vzdáleným laděním, což není výchozí nastavení. Pokud je vzdálené ladění zakázané, zobrazí se chybová stránka na kartě prohlížeče, která se nepodařilo najít, a zobrazí se pokyny ke spuštění prohlížeče s otevřeným portem ladění. Postupujte podle pokynů pro váš prohlížeč. Otevře se nové okno prohlížeče. Zavřete předchozí okno prohlížeče.
Po spuštění prohlížeče s povoleným vzdáleným laděním otevře klávesová zkratka ladění v předchozím kroku novou kartu ladicího programu.
Po chvíli se na kartě Zdroje zobrazí seznam sestavení .NET aplikace v rámci
file://uzlu.V kódu komponenty ( souborech) a souborech kódu C# ( ) se při provádění kódu nastaví
.razor.cszarážky. Po zarážce můžete kódem v jednom kroku(F10)normálně pokračovat v provádění kódu nebo pokračovat(F8).
Blazor poskytuje ladicí proxy server, který implementuje protokol Chrome DevTools a o rozšíření protokolu o . Informace specifické pro NET. Při stisknutí klávesové zkratky pro ladění Blazor nasádá Nástroj DevTools pro Chrome na proxy server. Proxy server se připojí k oknu prohlížeče, které chcete ladit (proto je potřeba povolit vzdálené ladění).
Zdrojové mapy prohlížeče
Zdrojové mapy prohlížeče umožňují prohlížeči mapovat zkompilované soubory zpět na původní zdrojové soubory a běžně se používají pro ladění na straně klienta. V současné Blazor době se ale jazyk C# nemapuje přímo na JavaScript/WASM. Místo toho Blazor interpretuje IL v prohlížeči, takže zdrojové mapy nejsou relevantní.
Konfigurace brány firewall
Pokud brána firewall blokuje komunikaci s ladicím proxy serverem, vytvořte pravidlo výjimky brány firewall, které umožňuje komunikaci mezi prohlížečem a NodeJS procesem.
Upozornění
Úprava konfigurace brány firewall musí být provedena opatrně, aby se zabránilo vytváření ohrožení zabezpečení. Pečlivě použijte pokyny k zabezpečení, dodržujte osvědčené postupy zabezpečení a respektujte upozornění vydaná výrobcem brány firewall.
Povolení otevřené komunikace s NodeJS tímto procesem:
- Otevře server Node pro jakékoli připojení v závislosti na možnostech a konfiguraci brány firewall.
- V závislosti na vaší síti může být riziko.
- Doporučuje se jenom na vývojářských počítačích.
Pokud je to možné, povolte pouze otevřenou komunikaci NodeJS s procesem v důvěryhodných nebo privátních sítích.
Pokyny Windows firewallu najdete v tématu Vytvoření příchozího programu nebo pravidla služby. Další informace najdete v článcích Windows Defender firewall s pokročilým zabezpečením a souvisejících článcích v sadě dokumentace Windows Firewall.
Řešení potíží
Pokud dochází k chybám, můžou vám pomoct následující tipy:
- Na kartě Ladicí program otevřete v prohlížeči nástroje pro vývojáře. Spuštěním příkazu v konzole
localStorage.clear()odeberte všechny zarážky. - Ověřte, že jste nainstalovali a důvěřoval certifikátu ASP.NET Core HTTPS. Další informace naleznete v tématu Vynutilit HTTPS v ASP.NET Core.
- Visual Studio možnost Povolit ladění JavaScriptu pro ASP.NET (Chrome, Edge a IE) v části Nástroje > Možnosti > Ladění > Obecné. Toto je výchozí nastavení pro Visual Studio. Pokud ladění nefunguje, ověřte, že je vybraná možnost .
- Pokud vaše prostředí používá proxy server HTTP, ujistěte se, že je
localhostsoučástí nastavení obejití proxy serveru. Můžete to udělat tak, že nastavíteNO_PROXYproměnnou prostředí v těchto nastaveních:- Soubor
launchSettings.jsonpro projekt. - Na úrovni proměnných uživatelského nebo systémového prostředí, aby bylo možné je použít pro všechny aplikace. Pokud používáte proměnnou prostředí, restartujte Visual Studio, aby se změna projeví.
- Soubor
- Ujistěte se, že brány firewall nebo proxy servery neblokují komunikaci s ladicím proxy serverem (
NodeJSproces). Další informace najdete v části Konfigurace brány firewall.
Zarážky v OnInitialized{Async} nenarazení
Spuštění ladicího proxy serveru architektury trvá krátkou dobu, takže se nemusí dostat k zarážkám v metodách Blazor životního cyklu. OnInitialized{Async} Doporučujeme na začátek těla metody přidat prodlevu, která ladicímu proxy serveru poskytne čas na spuštění před zarážkou. Zpoždění můžete zahrnout na if základě direktivy kompilátoru, abyste zajistili, že se zpoždění pro sestavení verze aplikace nezdrží.
protected override void OnInitialized()
{
#if DEBUG
Thread.Sleep(10000);
#endif
...
}
protected override async Task OnInitializedAsync()
{
#if DEBUG
await Task.Delay(10000);
#endif
...
}
Visual Studio (Windows)
Pokud Visual Studio výjimku, že se nepodařilo spustit adaptér ladění a uvádí, že došlo k dosažení časového limitu, můžete časový limit upravit pomocí nastavení registru:
VsRegEdit.exe set "<VSInstallFolder>" HKCU JSDebugger\Options\Debugging "BlazorTimeoutInMilliseconds" dword {TIMEOUT}
Zástupný {TIMEOUT} symbol v předchozím příkazu je v milisekundách. Například jedna minuta se přiřadí jako 60000 .
Blazor WebAssemblyAplikace je možné ladit pomocí vývojářových nástrojů prohlížeče v Chromium prohlížečích (Edge/Chrome). Aplikaci můžete také ladit pomocí následujících integrovaných vývojových prostředí (ICE):
- Visual Studio
- Visual Studio pro Mac
- Visual Studio Code
Mezi dostupné scénáře patří:
- Nastavte a odeberte zarážky.
- Spusťte aplikaci s podporou ladění v prostředích ID.
- Kód si projdete jedním krokem.
- Obnovte spouštění kódu pomocí klávesové zkratky v prostředích ID.
- V okně Místní hodnoty sledujte hodnoty místních proměnných.
- Podívejte se na zásobník volání, včetně řetězců volání mezi JavaScriptem a .NET.
Pro teď nemůžete:
- Přerušení u neošetřených výjimek.
- Než bude spuštěn ladicí proxy server, stiskněte během spouštění aplikace zarážky. To zahrnuje zarážky v a zarážky v metodách životního cyklu komponent, které jsou načteny první stránkou
Program.cspožadovanouOnInitialized{Async}z aplikace. - Ladění v jiných než místních scénářích (například Subsystém Windows pro Linux (WSL) nebo Visual Studio Codespaces).
- Automaticky znovu sestaví
*Server*back-endové aplikace hostovaného řešení během ladění, například spuštěním Blazor WebAssembly aplikace pomocídotnet watch run.
Požadavky
Ladění vyžaduje některý z následujících prohlížečů:
- Google Chrome (verze 70 nebo novější) (výchozí)
- Microsoft Edge (verze 80 nebo novější)
Ujistěte se, že brány firewall nebo proxy servery neblokují komunikaci s ladicím proxy serverem ( NodeJS proces). Další informace najdete v části Konfigurace brány firewall.
Visual Studio Code uživatelé vyžadují následující rozšíření:
- C# pro Visual Studio Code rozšíření
- Blazor Rozšíření ladění WASM (při použití jazyka C# pro Visual Studio Code verze 1.23.9 nebo novější)
Po otevření projektu v VS Code se může zobrazit oznámení, že k povolení ladění se vyžaduje další nastavení. V případě potřeby nainstalujte požadovaná rozšíření z Visual Studio Marketplace. Pokud chcete zkontrolovat nainstalovaná rozšíření, otevřete na řádku nabídek Zobrazit rozšíření nebo vyberte ikonu Rozšíření > na bočním panelu Aktivita.
Visual Studio pro Mac vyžaduje verzi 8.8 (build 1532) nebo novější:
- Nainstalujte nejnovější verzi služby Visual Studio pro Mac výběrem tlačítka Stáhnout Visual Studio pro Mac v Microsoftu: Visual Studio pro Mac.
- Vyberte kanál Preview v rámci Visual Studio. Další informace najdete v tématu Instalace verze Preview Visual Studio pro Mac.
Poznámka
Apple Safari v macOS se v současné době nepodporuje.
Ladění samostatné Blazor WebAssembly aplikace
Pokud chcete povolit ladění pro existující aplikaci, aktualizujte soubor v projektu po spuštění tak, aby v každém profilu spuštění zahrnoval Blazor WebAssembly launchSettings.json následující inspectUri vlastnost:
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
Po aktualizaci by launchSettings.json měl soubor vypadat podobně jako v následujícím příkladu:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:50454",
"sslPort": 44399
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"BlazorApp1.Server": {
"commandName": "Project",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Vlastnost inspectUri :
- Umožňuje integrovaného vývojového prostředí zjistit, že aplikace je Blazor WebAssembly aplikace.
- Instruuje infrastrukturu ladění skriptů pro připojení k prohlížeči prostřednictvím Blazor ladicího proxy serveru.
Rozhraní poskytuje zástupné hodnoty pro protokol WebSocket ( ), hostitele ( ), port ( ) a identifikátor URI inspektoru ve wsProtocol url.hostname url.port browserInspectUri spuštěném prohlížeči ( ).
Ladění aplikace Blazor WebAssembly v Visual Studio:
Vytvořte nové hostované Blazor WebAssembly řešení.
Když je
Serverprojekt vybraný v Průzkumník řešení, stisknutím klávesy F5 spusťte aplikaci v ladicím programu.Poznámka
Při ladění pomocí prohlížeče založeného na Chromium, jako je Google Chrome nebo Microsoft Edge, se může otevřít nové okno prohlížeče s odděleným profilem pro relaci ladění místo otevření karty v existujícím okně prohlížeče s profilem uživatele. Pokud je ladění s profilem uživatele povinné, přistupte k jednomu z následujících přístupů:
- Před stisknutím klávesy F5 zavřete všechny otevřené instance prohlížeče a spusťte ladění.
- Nakonfigurujte Visual Studio, aby se prohlížeč spouštěl s profilem uživatele. Další informace o tomto přístupu najdete v tématu Ladění WASM ve VS spustí Edge s odděleným adresářem uživatelských dat Blazor (dotnet/aspnetcore #20915).
Poznámka
Spuštění bez ladění (Ctrl + F5) se nepodporuje. Když se aplikace spustí v konfiguraci ladění, režie ladění vždy vede k malému snížení výkonu.
V aplikaci
*Client*nastavte zarážku na řádkucurrentCount++;vPages/Counter.razor.V prohlížeči přejděte na
Counterstránku a výběrem tlačítka Click me (Klikněte na mě) přejděte na zarážku.V Visual Studio zkontrolujte hodnotu pole v
currentCountokně Místní hodnoty.Pokračujte v provádění stisknutím klávesy F5.
Při ladění Blazor WebAssembly aplikace můžete také ladit kód serveru:
- Nastavte zarážku na
Pages/FetchData.razorstránce v OnInitializedAsync . - Nastavte zarážku v
WeatherForecastControllerGetmetodě v akci. - Přejděte na stránku a těsně před tím, než vydá požadavek HTTP na server, přejděte k první
Fetch DataFetchDatazarážce v komponentě. - Stisknutím klávesy F5 pokračujte v provádění a potom na serveru v nástroji stiskněte zarážku.
WeatherForecastController - Znovu stiskněte klávesu F5, abyste mohli pokračovat v provádění a podívat se na tabulku předpovědi počasí vykreslenou v prohlížeči.
Poznámka
Zarážky se při spuštění aplikace nenarazí před spuštěním ladicího proxy serveru. To zahrnuje zarážky v a zarážky v metodách životního cyklu komponent, které jsou načteny první stránkou Program.cs požadovanou OnInitialized{Async} z aplikace.
Pokud je aplikace hostovaná v jiné základní cestě aplikace než , aktualizujte následující vlastnosti v souboru tak, aby odrážely / základní cestu Properties/launchSettings.json aplikace:
applicationUrl:"iisSettings": { ... "iisExpress": { "applicationUrl": "http://localhost:{INSECURE PORT}/{APP BASE PATH}/", "sslPort": {SECURE PORT} } },inspectUrikaždého profilu:"profiles": { ... "{PROFILE 1, 2, ... N}": { ... "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/{APP BASE PATH}/_framework/debug/ws-proxy?browser={browserInspectUri}", ... } }
Zástupné symboly v předchozích nastaveních:
{INSECURE PORT}: Nezabezpečený port. Ve výchozím nastavení je k dispozici náhodná hodnota, ale je povolen vlastní port.{APP BASE PATH}: Základní cesta aplikace.{SECURE PORT}: Zabezpečený port. Ve výchozím nastavení je k dispozici náhodná hodnota, ale je povolen vlastní port.{PROFILE 1, 2, ... N}: Profily nastavení spuštění. Aplikace obvykle ve výchozím nastavení určuje více než jeden profil (například profil pro IIS Express a profil projektu, který používá Kestrel server).
V následujících příkladech je aplikace hostovaná na adrese se základní cestou /OAT aplikace nakonfigurovanou jako wwwroot/index.html <base href="/OAT/"> :
"applicationUrl": "http://localhost:{INSECURE PORT}/OAT/",
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/OAT/_framework/debug/ws-proxy?browser={browserInspectUri}",
Informace o použití vlastní základní cesty aplikace pro Blazor WebAssembly aplikace najdete v tématu Hostování a nasazení ASP.NET Core Blazor .
Ladit v prohlížeči
pokyny v této části se vztahují na Google Chrome a Microsoft Edge spuštěné v Windows.
Spusťte ladicí sestavení aplikace ve vývojovém prostředí.
Spusťte prohlížeč a přejděte na adresu URL aplikace (například
https://localhost:5001).V prohlížeči se pokuste zahájit vzdálené ladění stisknutím klávesy SHIFT + ALT + d.
Prohlížeč musí běžet se zapnutým vzdáleným laděním, což není výchozí nastavení. Pokud je vzdálené ladění zakázané, zobrazí se stránka s informací o tom, že se pro spuštění prohlížeče s otevřeným portem ladění nedaří najít chybovou stránku karty prohlížeče. Postupujte podle pokynů pro prohlížeč a otevřete nové okno prohlížeče. Zavřete předchozí okno prohlížeče.
Po spuštění prohlížeče se zapnutým vzdáleným laděním otevře klávesovou zkratku pro ladění v předchozím kroku novou kartu ladicího programu.
Po chvíli se na kartě zdroje zobrazí seznam sestavení .NET aplikace v rámci
file://uzlu.V kódu komponenty (
.razorsoubory) a souborech kódu jazyka C# (.cs) jsou zarážky, které jste nastavili, zasaženy při spuštění kódu. Po stisknutí zarážky se provede krok (F10) prostřednictvím kódu nebo obnovení kódu (F8) normálně.
Blazor poskytuje ladicí proxy, který implementuje protokol Chrome DevTools a rozšiřuje protokol pomocí. Informace specifické pro síť. Když se stiskne klávesová zkratka ladění, navede Blazor devtools Chrome na proxy serveru. Proxy server se připojí k oknu prohlížeče, které se pokoušíte ladit (takže je potřeba povolit vzdálené ladění).
Mapy zdroje prohlížeče
Mapování zdrojového kódu prohlížeče umožňují prohlížeči mapovat zkompilované soubory zpátky na původní zdrojové soubory a často se používají pro ladění na straně klienta. V Blazor současné době ale nemapuje C# přímo na JavaScript/WASM. Místo toho Blazor provede výklad il v prohlížeči, takže zdrojové mapy nejsou relevantní.
Konfigurace brány firewall
Pokud brána firewall blokuje komunikaci s ladicím proxy, vytvoří pravidlo výjimky brány firewall, které umožňuje komunikaci mezi prohlížečem a NodeJS procesem.
Upozornění
Úprava konfigurace brány firewall musí být provedena opatrně, aby se zabránilo vytváření ohrožení zabezpečení. Pečlivě použijte pokyny k zabezpečení, dodržujte osvědčené postupy zabezpečení a respektujte upozornění vydaná výrobcem brány firewall.
Povolení otevřené komunikace s NodeJS tímto procesem:
- Otevře server Node pro jakékoli připojení v závislosti na možnostech a konfiguraci brány firewall.
- V závislosti na vaší síti může být riziko.
- Doporučuje se jenom na vývojářských počítačích.
Pokud je to možné, povolte pouze otevřenou komunikaci NodeJS s procesem v důvěryhodných nebo privátních sítích.
Pokyny Windows brány firewall najdete v tématu Vytvoření příchozího programu nebo pravidla služby. Další informace najdete v článcích Windows Defender firewall s pokročilým zabezpečením a souvisejících článcích v sadě dokumentace Windows Firewall.
Řešení potíží
Pokud dochází k chybám, můžou vám pomoct následující tipy:
- Na kartě Ladicí program otevřete v prohlížeči nástroje pro vývojáře. Spuštěním příkazu v konzole
localStorage.clear()odeberte všechny zarážky. - Ověřte, že jste nainstalovali a důvěřoval certifikátu ASP.NET Core HTTPS. Další informace naleznete v tématu Vynutilit HTTPS v ASP.NET Core.
- Visual Studio možnost Povolit ladění JavaScriptu pro ASP.NET (Chrome, Edge a IE) v části Nástroje > Možnosti > Ladění > Obecné. Toto je výchozí nastavení pro Visual Studio. Pokud ladění nefunguje, ověřte, že je vybraná možnost .
- Pokud vaše prostředí používá proxy server HTTP, ujistěte se, že je
localhostsoučástí nastavení obejití proxy serveru. To lze provést nastavením proměnnéNO_PROXYprostředí v:- Soubor
launchSettings.jsonpro projekt. - Na úrovni proměnných uživatelského nebo systémového prostředí, aby bylo možné je použít pro všechny aplikace. Při použití proměnné prostředí restartujte Visual Studio, aby se změna projeví.
- Soubor
- Ujistěte se, že brány firewall nebo proxy servery neblokují komunikaci s ladicím proxy serverem (
NodeJSproces). Další informace najdete v části Konfigurace brány firewall.
Zarážky v OnInitialized{Async} nenarazení
Spuštění ladicího proxy serveru architektury trvá krátkou dobu, takže se nemusí dostat k zarážkám v metodách Blazor životního cyklu. OnInitialized{Async} Doporučujeme na začátek těla metody přidat prodlevu, která ladicímu proxy serveru poskytne čas na spuštění před zarážkou. Zpoždění můžete zahrnout na if základě direktivy kompilátoru, abyste zajistili, že se zpoždění pro sestavení verze aplikace nezdrží.
protected override void OnInitialized()
{
#if DEBUG
Thread.Sleep(10000);
#endif
...
}
protected override async Task OnInitializedAsync()
{
#if DEBUG
await Task.Delay(10000);
#endif
...
}
Visual Studio (Windows)
Pokud Visual Studio výjimku, že se nepodařilo spustit adaptér ladění a uvádí, že došlo k dosažení časového limitu, můžete časový limit upravit pomocí nastavení registru:
VsRegEdit.exe set "<VSInstallFolder>" HKCU JSDebugger\Options\Debugging "BlazorTimeoutInMilliseconds" dword {TIMEOUT}
Zástupný {TIMEOUT} symbol v předchozím příkazu je v milisekundách. Například jedna minuta je přiřazená jako 60000 .