ASP.NET Core'da İstek Özellikleri

Tarafından Steve Smith

HttpContext Uygulamaların ve ara yazılımların istekleri işlemek için kullandığı API'nin altında özellik arabirimleri adı verilen bir soyutlama katmanı vardır. Her özellik arabirimi tarafından HttpContextkullanıma sunulan işlevselliğin ayrıntılı bir alt kümesini sağlar. bu arabirimler, isteğin tamamını HttpContextyeniden uygulamak zorunda kalmadan işlendiğinden sunucu veya ara yazılım tarafından eklenebilir, değiştirilebilir, sarmalanabilir, değiştirilebilir veya hatta kaldırılabilir. Bunlar, test sırasında işlevlerin sahtesini yapmak için de kullanılabilir.

Özellik koleksiyonları

Features özelliğiHttpContext, geçerli istek için özellik arabirimleri koleksiyonuna erişim sağlar. Özellik koleksiyonu bir istek bağlamında bile değişebilir olduğundan, ara yazılım koleksiyonu değiştirmek ve ek özellikler için destek eklemek için kullanılabilir. Bazı gelişmiş özellikler yalnızca özellik koleksiyonu aracılığıyla ilişkili arabirime erişilerek kullanılabilir.

Özellik arabirimleri

ASP.NET Core, içinde, destekledikleri özellikleri tanımlamak için çeşitli sunucular ve ara yazılım tarafından paylaşılan bir dizi ortak HTTP özellik arabirimi Microsoft.AspNetCore.Http.Featurestanımlar. Sunucular ve ara yazılım, ek işlevlerle kendi arabirimlerini de sağlayabilir.

Özellik arabirimlerinin çoğu isteğe bağlı, açık işlevsellik sağlar ve özellik mevcut değilse bunların ilişkili HttpContext API'leri varsayılan değerleri sağlar. Temel 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 birkaç arabirim gösterilir.

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: Yanıt gövdesini yazmak için bir , PipeWriterveya dosyası kullanarak Streamfarklı yollar tanımlar. İstekleri işlemek için bu özellik gereklidir. Bu, ve IHttpSendFileFeatureöğesinin yerini alırIHttpResponseFeature.Body.

IHttpAuthenticationFeature: İstekle şu anda ilişkili olanını tutar ClaimsPrincipal .

IFormFeature: Gelen HTTP ve çok parçalı form gönderimlerini 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 verilmediğini denetlemek için kullanılır.

IHttpActivityFeature: Tanılama dinleyicileri için bilgi eklemek Activity için kullanılır.

IHttpBufferingFeature: İsteklerin ve/veya yanıtların arabelleğinin devre dışı bırakılmasına yönelik yöntemleri tanımlar.

IHttpConnectionFeature: Bağlantı kimliği ile yerel ve uzak adresler ile bağlantı noktalarının özelliklerini tanımlar.

IHttpMaxRequestBodySizeFeature: Geçerli istek için izin verilen en büyük istek gövdesi boyutunu denetler.

IHttpRequestBodyDetectionFeature: İsteğin bir gövdesi olup olmadığını gösterir.

IHttpRequestIdentifierFeature: İstekleri benzersiz olarak tanımlamak için uygulanabilecek bir özellik ekler.

IHttpRequestLifetimeFeature: bağlantıları durdurma veya istemci bağlantısının kesilmesi gibi bir isteğin erken sonlandırılıp sonlandırılmamış olduğunu algılama desteğini tanımlar.

IHttpRequestTrailersFeature: Varsa istek fragman ü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 uygulamanın yanıt fragmanı üst bilgileri sağlamasına olanak tanır.

IHttpSendFileFeature: Dosyaları zaman uyumsuz olarak göndermek için bir yöntem tanımlar.

IHttpUpgradeFeature: İstemcinin, sunucu protokolleri değiştirmek isterse hangi ek protokolleri kullanmak istediğinizi belirtmesine olanak tanıyan HTTP Yükseltmeleri desteğini tanımlar.

IHttpWebSocketFeature: Web yuvalarını desteklemek için bir API tanımlar.

IHttpsCompressionFeature: YANıT sıkıştırmanın HTTPS bağlantıları üzerinden kullanılması gerekip gerekmediğini denetler.

IItemsFeature: İstek başına uygulama durumu için koleksiyonu depolar Items .

IQueryFeature: Sorgu dizesini ayrıştırır ve önbelleğe alır.

IRequestBodyPipeFeature: İstek gövdesini olarak PipeReadertemsil eder.

IRequestCookiesFeature: İstek Cookie üst bilgisi değerlerini ayrıştırır ve önbelleğe alır.

IResponseCookiesFeature: Yanıtların cookieüst bilgisine nasıl uygulanacağını Set-Cookie denetler.

IServerVariablesFeature: Bu özellik, IIS tarafından sağlananlar gibi istek sunucusu değişkenlerine erişim sağlar.

IServiceProvidersFeature: Kapsamı belirlenmiş istek hizmetlerine erişim IServiceProvider sağlar.

ISessionFeature: Kullanıcı oturumlarını desteklemek için tanımlar ISessionFactory ve ISession özetler. ISessionFeature tarafından SessionMiddleware uygulanır (bkz. ASP.NET Core oturumu).

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ği ve işlevselliğiyle ilgili kullanıcı bilgilerinin depolanmasıyla ilgili kullanıcı onayını sorgulamak, vermek ve geri çekmek için kullanılır.

Ek kaynaklar