Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés
Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.
Az IHttpContextAccessor használatát általában kerülni kell interaktív megjelenítés esetén, mert nem mindig elérhető egy érvényes HttpContext.
IHttpContextAccessor a statikus kiszolgálóoldali renderelés (statikus SSR) során használható, például statikusan renderelt gyökérösszetevőkben, valamint a kiszolgálón futó webes API-hívások jogkivonatkezelőjének használatakor . Javasoljuk, IHttpContextAccessor hogy kerülje, ha a kiszolgálón futó statikus SSR vagy kód nem garantálható.
HttpContext
kaszkádolt paraméterként csak statikusan renderelt gyökérösszetevőkben vagy statikus SSR-ben használható általános feladatokhoz, például fejlécek vagy az App összetevő (App.razor) egyéb tulajdonságainak vizsgálatához és módosításához. Az érték az interaktív renderelés során van null .
[CascadingParameter]
private HttpContext? HttpContext { get; set; }
További kontextust speciális peremhálózati esetekről† a következő cikkekben található vitafórumban talál:
-
A HttpContext érvényes az interaktív szerveroldali renderelés Blazor lapon (
dotnet/AspNetCore.Docs#34301) -
Az IHttpContextAccessor használatának biztonsági következményei Blazor Server (
dotnet/aspnetcore#45699)
†Az alkalmazásokat készítő és karbantartó Blazor fejlesztőknek nem kell speciális fogalmakat használniuk, amikor a jelen cikkben szereplő általános útmutatást követik. A legfontosabb szem előtt tartani, hogy HttpContext alapvetően egy kiszolgálóalapú, kérés-válasz funkció, amely csak általánosan elérhető a kiszolgálón a statikus SSR során, és csak akkor jön létre, ha egy felhasználó kapcsolatcsoportja létrejött.
A válasz indítása után ne állítsa be vagy módosítsa a fejléceket
Ha megkísérli beállítani vagy módosítani egy fejlécet az első renderelés után (a válasz elindítása után) hibaüzenet jelenik meg:
System.InvalidOperationException: 'Headers are read-only, response has already started.'
Példák a következő helyzetekre, amelyek ezt a hibát eredményezik:
- A SignInManager<TUser>.PasswordSignInAsync hívása meg kell adnia a fejléceket a Identity helyes működéséhez, miközben streaming renderelést alkalmaz.
- Élőfej beállítása vagy módosítása, miután a válasz elkezdődött az interaktív renderelés során.
A fejlécek válasz előtti beállításáról a ASP.NET Core Blazor indítási útmutatója nyújt útmutatást.
Ne használjon közvetlenül vagy közvetve IHttpContextAccessor/HttpContext a kiszolgálóoldali Razor-alkalmazások Blazor összetevőiben. Blazor alkalmazások a ASP.NET Core-folyamat környezetén kívül futnak. A HttpContext nem garantáltan elérhető a IHttpContextAccessor-en belül, és a HttpContext nem garantáltan tartalmazza azt a környezetet, amely elindította a Blazor alkalmazást.
A kérésállapot Blazor alkalmazásnak való átadásának ajánlott módszere a gyökérösszetevő paraméterein keresztül történik az alkalmazás kezdeti renderelése során. Másik lehetőségként az alkalmazás átmásolhatja az adatokat egy hatókörrel rendelkező szolgáltatásba a gyökérösszetevő inicializálási életciklus-eseményében az alkalmazás egészére való használatra. További információ: ASP.NET Core kiszolgálóoldali és Blazor Web App további biztonsági forgatókönyvek.
A kiszolgálóoldali Blazor biztonság egyik kritikus eleme, hogy az adott kapcsolatcsoporthoz csatlakoztatott felhasználó a Blazor kapcsolatcsoport létrehozása után bizonyos időpontban frissülhet, de a IHttpContextAccessornem frissül. A helyzet egyéni szolgáltatásokkal való kezelésére vonatkozó további információkért lásd ASP.NET Core kiszolgálóoldali és Blazor Web App további biztonsági forgatókönyveket.
Útmutatást IHttpContextAccessor és HttpContext-hez az ASP.NET Core SignalR-ben lásd: IHttpContextAccessor/HttpContext az ASP.NET Core SignalR-ben.