ASP.NET Core'da İstek Özellikleri

Tarafından Steve Smith

Uygulamaların HttpContext 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, hatta kaldırılabilir. Bunlar, test sırasında işlevselliği taklit etmek 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 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 gerektiği gibi gösterilir.

Aşağıdaki özellik arabirimleri şunlardandı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övdeye sahip olup olmadığını gösterir.

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

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

IHttpRequestTrailersFeature: varsa istek römork ü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 römork üst bilgileri sağlamasını sağlar.

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

IHttpUpgradeFeature: İstemcinin, sunucu protokolleri değiştirmek isterse kullanmak istediği ek protokolleri 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: koleksiyonu istek başına uygulama durumu için 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.

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

ITlsConnectionFeature: İstemci sertifikalarını almak için bir API tanımlar.

ITlsTokenBindingFeature: TLS belirteç bağlama parametreleriyle çalışmaya yönelik yöntemleri 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