Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 10 sürümüne bakın.
IHttpContextAccessor genellikle etkileşimli işlemede kullanılmaktan kaçınılmalıdır çünkü geçerli bir HttpContext her zaman mevcut değildir.
IHttpContextAccessor statik sunucu tarafı işleme (statik SSR) sırasında, örneğin statik olarak işlenmiş kök bileşenlerde ve sunucuda web API çağrıları için belirteç işleyicisi kullanılırken kullanılabilir. Statik SSR'nin veya sunucuda çalışan kodun garanti edilemediği durumlarda IHttpContextAccessor kaçınmanızı öneririz.
HttpContextyalnızca statik olarak işlenmiş kök bileşenlerde veya bileşendeki () üst bilgileri veya diğer özellikleri App inceleme ve değiştirme gibi genel görevler için statik SSR sırasında App.razor olarak kullanılabilir. Değer etkileşimli işleme sırasındadır null .
[CascadingParameter]
private HttpContext? HttpContext { get; set; }
Gelişmiş uç durumlarında ek bağlam için† aşağıdaki makalelerdeki tartışmaya bakın:
-
HttpContext, Etkileşimli Sunucu İşleme Blazor sayfasında geçerlidir (
dotnet/AspNetCore.Docs#34301) -
(Blazor Server #45699) içinde
dotnet/aspnetcoreIHttpContextAccessor kullanmanın güvenlik etkileri
† Bu makaledeki genel yönergelere uyulduğunda en çok uygulama oluşturan ve bakımını üstlenen Blazor geliştiricilerin gelişmiş kavramları ele almaları gerekmez. Göz önünde bulundurulması HttpContext gereken en önemli kavram, temelde yalnızca statik SSR sırasında sunucuda genel olarak kullanılabilen ve yalnızca kullanıcının bağlantı hattı kurulduğunda oluşturulan sunucu tabanlı, istek-yanıt özelliğidir.
Yanıt başladıktan sonra başlıkları ayarlamayın veya değiştirmeyin
İlk işlemeden sonra (yanıt başlatıldıktan sonra) bir üst bilgi ayarlamaya veya değiştirmeye çalışmak hatayla sonuçlanır:
System.InvalidOperationException: 'Headers are read-only, response has already started.'
Bu hataya neden olan durumlara örnek olarak şunlar verilebilir:
- ÇağrısıSignInManager<TUser>.PasswordSignInAsync, Identity benimserken doğru çalışması için üst bilgileri ayarlamalıdır.
- Etkileşimli işleme sırasında yanıt başladıktan sonra bir başlık ayarlamaya veya değiştirmeye çalışma.
Yanıt başlamadan önce üst bilgileri ayarlama hakkında yönergeler için bkz. ASP.NET Core Blazor başlatma.
IHttpContextAccessor / HttpContext sunucu tarafı Razor uygulamalarının Blazor bileşenlerinde doğrudan veya dolaylı olarak kullanmayın. Blazor uygulamalar ASP.NET Core işlem hattı bağlamının dışında çalışır. HttpContext IHttpContextAccessoriçinde kullanılabilir olması garanti edilmez ve HttpContextBlazor uygulamasını başlatan bağlamı tutacağı garanti edilmez.
İstek durumunu Blazor uygulamaya geçirmek için önerilen yaklaşım, uygulamanın ilk işlemesi sırasında kök bileşen parametrelerinden geçer. Alternatif olarak uygulama, kök bileşenin uygulama genelinde kullanılmak üzere başlatma yaşam döngüsü olayında verileri kapsamlı bir hizmete kopyalayabilir. Daha fazla bilgi için bkz. ASP.NET Core sunucu tarafı ve Blazor Web App ek güvenlik senaryoları.
Sunucu tarafı Blazor güvenliğinin kritik bir yönü, belirli bir bağlantı hattına bağlı olan kullanıcının Blazor bağlantı hattı kurulduktan sonra bir noktada güncellenebilmesidir; ancak IHttpContextAccessorgüncellenmez. Özel hizmetlerle bu durumu ele alma hakkında daha fazla bilgi için bkz. ASP.NET Core sunucu tarafı ve Blazor Web App ek güvenlik senaryoları.
ASP.NET Core IHttpContextAccessor ile ilgili HttpContext ve SignalR konularında ASP.NET Core SignalR içindeki IHttpContextAccessor/HttpContext kısmına bakın.
ASP.NET Core