ASP.NET Core içindeki istek özellikleri
Steve Smith tarafından
HttpContextUygulamaların ve ara yazılımların istekleri işlemek için kullandığı API 'nin altında, özellik arabirimleri olarak adlandırılan bir soyutlama katmanı vardır. Her özellik arabirimi tarafından sunulan işlevlerin ayrıntılı bir alt kümesini sağlar HttpContext . Bu arabirimler, isteğin tamamı yeniden uygulanması gerekmeden işlenirken, sunucu veya ara yazılım tarafından eklenebilir, değiştirilebilir, sarmalanabilir, değiştirilebilir veya kaldırılabilir HttpContext . Ayrıca, test sırasında işlevselliği sahte bir şekilde kullanılabilir.
Özellik koleksiyonları
FeaturesÖzelliği, HttpContext geçerli istek için özellik arabirimleri koleksiyonuna erişim sağlar. Özellik koleksiyonu bir istek bağlamı içinde bile değişebilir olduğundan, ara yazılım, koleksiyonu değiştirmek ve ek özellikler için destek eklemek üzere kullanılabilir. Bazı gelişmiş özellikler yalnızca özellik koleksiyonu aracılığıyla ilişkili arabirime erişerek kullanılabilir.
Özellik arabirimleri
ASP.NET Core, ' de Microsoft.AspNetCore.Http.Features destekledikleri özellikleri belirlemek için çeşitli sunucular ve ara yazılım tarafından paylaşılan bir dizi ortak HTTP özelliği arabirimini tanımlar. Sunucular ve ara yazılım, ek işlevlere sahip kendi arabirimlerini de sağlayabilir.
Çoğu özellik arabirimi isteğe bağlı, açık işlevsellik sağlar ve ilgili HttpContext API 'leri, özellik mevcut değilse varsayılan değerleri sağlar. Çekirdek istek ve yanıt işlevselliği sağladığından ve isteği işlemek için uygulanması gerektiğinden, aşağıdaki içerikte bazı arabirimler belirtilmiştir.
Aşağıdaki özellik arabirimleri şunlardır Microsoft.AspNetCore.Http.Features :
IHttpRequestFeature: Protokol, yol, sorgu dizesi, üst bilgiler ve gövde dahil olmak üzere bir HTTP isteğinin yapısını tanımlar. İstekleri işlemek için bu özellik gereklidir.
IHttpResponseFeature: Durum kodu, üst bilgiler ve yanıtın gövdesi dahil olmak üzere bir HTTP yanıtının yapısını tanımlar. İstekleri işlemek için bu özellik gereklidir.
IHttpResponseBodyFeature: Bir Stream , a veya bir dosya kullanarak yanıt gövdesini yazmanın farklı yollarını tanımlar PipeWriter . İstekleri işlemek için bu özellik gereklidir. Bu ve ' nin yerini alır IHttpResponseFeature.Body IHttpSendFileFeature .
IHttpAuthenticationFeature: ClaimsPrincipal Şu anda istekle ilişkili olan öğesini tutar.
IFormFeature: Gelen HTTP ve çok parçalı form gönderilerini ayrıştırmak ve önbelleğe almak için kullanılır.
IHttpBodyControlFeature: İstek veya Yanıt gövdeleri için zaman uyumlu GÇ işlemlerine izin verilip verilmeyeceğini denetlemek için kullanılır.
IHttpActivityFeature: Activity Tanılama dinleyicilerine bilgi eklemek için kullanılır.
IHttpBufferingFeature: İsteklerin ve/veya yanıtlarının arabelleğe alınması devre dışı bırakmak için yöntemleri tanımlar.
IHttpConnectionFeature: Bağlantı kimliği ve yerel ve uzak adresler ve bağlantı noktaları için özellikleri tanımlar.
IHttpMaxRequestBodySizeFeature: Geçerli istek için izin verilen en fazla istek gövdesi boyutunu denetler.
IHttpRequestBodyDetectionFeature: İsteğin bir gövdeye sahip olup olmayacağını gösterir.
IHttpRequestIdentifierFeature: İstekleri benzersiz şekilde tanımlamak için uygulanabilecek bir özellik ekler.
IHttpRequestLifetimeFeature: Bağlantı iptal etme veya bir isteğin erken sonlandırılıp sonlandırılmayacağını (örneğin, bir istemcinin bağlantısının kesilmesi) için desteği tanımlar.
IHttpRequestTrailersFeature: Varsa istek artbilgisi üst bilgilerine erişim sağlar.
IHttpResetFeature: HTTP/2 veya HTTP/3 gibi bunları destekleyen protokoller için sıfırlama iletileri göndermek için kullanılır.
IHttpResponseTrailersFeature: Destekleniyorsa yanıt artbilgisi bilgilerini sağlar.
IHttpSendFileFeature: Dosyaları zaman uyumsuz olarak göndermek için bir yöntem tanımlar.
IHttpUpgradeFeature: Sunucu protokolleri değiştirmek isterse, istemcinin kullanmak istediğiniz ek protokolleri belirtmesini sağlayan http yükseltmeleriiçin desteği tanımlar.
IHttpWebSocketFeature: Web yuvalarını desteklemek için bir API tanımlar.
IHttpsCompressionFeature: Yanıt sıkıştırmasının HTTPS bağlantıları üzerinden kullanılması gerekip gerekmediğini denetler.
IItemsFeature: Items İstek başına uygulama durumu için koleksiyonu depolar.
IQueryFeature: Sorgu dizesini ayrıştırır ve önbelleğe alır.
IRequestBodyPipeFeature: İstek gövdesini bir olarak temsil eder PipeReader .
IRequestCookiesFeature: İstek üst bilgisi değerlerini ayrıştırır ve önbelleğe alır Cookie .
IResponseCookiesFeature: Yanıtın üstbilgiye nasıl cookie uygulanacağını denetler Set-Cookie .
IServerVariablesFeature: Bu özellik, IIS tarafından sağlananlar gibi istek sunucusu değişkenlerine erişim sağlar.
IServiceProvidersFeature: IServiceProvider Kapsamlı bir istek hizmetleriyle erişim sağlar.
ISessionFeature: ISessionFactory ISession Kullanıcı oturumlarını desteklemek için tanımlar ve soyutlamalar tanımlar. ISessionFeature , SessionMiddleware (bkz ASP.NET Core'de oturum .) tarafından uygulanır.
ITlsConnectionFeature: İstemci sertifikalarını almak için bir API tanımlar.
ITlsTokenBindingFeature: TLS belirteci bağlama parametreleriyle çalışma yöntemlerini tanımlar.
ITrackingConsentFeature: Site etkinliğiyle ve işlevlerle ilgili Kullanıcı bilgilerinin depolanması ile ilgili Kullanıcı onayını sorgulamak, vermek ve geri çekmek için kullanılır.