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 HttpContext
kullanıma sunulan işlevselliğin ayrıntılı bir alt kümesini sağlar. bu arabirimler, isteğin tamamını HttpContext
yeniden 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 , PipeWriter
veya dosyası kullanarak Stream
farklı 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. ISessionFeature
tarafı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.