Kullanım Kılavuzu
Microsoft.AspNetCore.SystemWebAdapters
ASP.NET Core'da ASP.NET çerçeveden davranışı taklit etmek için bir öykünme katmanı sağlar. Bunları kullanırken dikkat edilmesi gereken bazı noktalara ilişkin bazı yönergeler aşağıdadır:
HttpContext
Ömür boyu
Bağdaştırıcılar, bir isteğin ömrü boyunca kullanılamayan tarafından desteklenir HttpContext . Bu nedenle, HttpContext ASP.NET Core üzerinde çalıştırıldığında bir isteğin ardından da kullanılamazken, ASP.NET Framework'te bazen çalışır. bir ObjectDisposedException istek sonundan sonra kullanıldığı durumlarda oluşturulur.
Öneri: Gereken değerleri bir POCO'da depolayın ve bunu tutun.
Dönüştürme HttpContext
bir'i değerine dönüştürmenin HttpContextHttpContextiki yolu vardır:
- Örtük döküm
- Oluşturucu kullanımı
Öneri: Çoğu durumda, oluşturulan örneği önbelleğe alacak ve istek başına yalnızca bir tane HttpContext olduğundan örtük atama tercih edilmelidir.
CurrentCulture varsayılan olarak ayarlanmadı
ASP.NET Framework'te CurrentCulture bir istek için ayarlandı, ancak bu işlem ASP.NET Core'da otomatik olarak yapılmaz. Bunun yerine, işlem hattınıza uygun ara yazılımı eklemeniz gerekir.
Öneri: Bunun nasıl etkinleştirileceği hakkında ayrıntılı bilgi için bkz . ASP.NET Çekirdek Yerelleştirme .
Bunu ASP.NET Framework ile benzer davranışlarla etkinleştirmenin en kolay yolu, işlem hattınıza aşağıdakileri eklemektir:
app.UseRequestLocalization();
CurrentPrincipal
ASP.NET Framework'te CurrentPrincipalCurrent geçerli kullanıcıya ayarlanır. Bu, ASP.NET Core'da kullanıma sunulmaz. Bunun için destek, uç noktaya ekleyerek ISetThreadCurrentPrincipal
(aracılığıyla denetleyiciler tarafından kullanılabilir) bu bağdaştırıcılarla SetThreadCurrentPrincipalAttribute
kullanılabilir. Ancak, yalnızca kodun kullanımı kaldırmak için yeniden düzenlenememesi durumunda kullanılmalıdır.
Öneri: Mümkünse özelliğini User kullanın veya User bunun yerine arama sitesine geçirin. Mümkün değilse, geçerli kullanıcıyı ayarlamayı etkinleştirin ve ayrıca isteği mantıksal tek iş parçacığı olarak ayarlamayı göz önünde bulundurun (ayrıntılar için aşağıya bakın).
İstek iş parçacığı ASP.NET Core'da yok
ASP.NET Framework'te bir isteğin iş parçacığı benzitesi vardı ve Current yalnızca bu iş parçacığında kullanılabilirdi. ASP.NET Core bu garantiye sahip değildir, bu nedenle Current aynı zaman uyumsuz bağlam içinde kullanılabilir ancak iş parçacıklarıyla ilgili hiçbir garanti sunulmaz.
Öneri: öğesini okuyor/yazıyorsanız HttpContext, bunu tek iş parçacıklı bir şekilde yaptığınızdan emin olmanız gerekir. ayarını yaparak ISingleThreadedRequestMetadata
bir isteği hiçbir zaman uyumsuz bağlamda eşzamanlı olarak çalışmamaya zorlayabilirsiniz. Bu, performansı etkiler ve yalnızca eşzamanlı olmayan erişim sağlamak için kullanımı yeniden düzenleyemiyorsanız kullanılmalıdır. ile SingleThreadedRequestAttribute
denetleyicilere eklemek için kullanılabilecek bir uygulama vardır:
[SingleThreadedRequest]
public class SomeController : Controller
{
...
}
Request ön yükleme yapılması gerekebilir
Varsayılan olarak, gelen istek her zaman aranabilir veya tam olarak kullanılabilir değildir. .NET Framework'te görülen davranışı elde etmek için giriş akışını önceden etkinleştirmeyi tercih edebilirsiniz. Bu, gelen akışı tamamen okur ve belleğe veya diske arabelleğe alır (ayarlara bağlı olarak).
Öneri: Arabirimi uygulayan IPreBufferRequestStreamMetadata
uç nokta meta verileri uygulanarak bu etkinleştirilebilir. Bu, denetleyicilere veya yöntemlere uygulanabilen bir öznitelik PreBufferRequestStreamAttribute
olarak kullanılabilir.
Bunu tüm MVC uç noktalarında etkinleştirmek için aşağıdaki gibi kullanılabilecek bir uzantı yöntemi vardır:
app.MapDefaultControllerRoute()
.PreBufferRequestStream();
Response arabelleğe almayı gerektirebilir
üzerindeki Response bazı API'ler, çıkış akışının arabelleğe alınıp alınmaması gerekir. ÖrneğinOutput, , End()Clear(), ve SuppressContent.
Öneri: Göndermeden önce yanıtı arabelleğe almayı gerektiren davranışı desteklemek için Response uç noktaların bunu uygulayan IBufferResponseStreamMetadata
uç nokta meta verileriyle kabul etmesi gerekir.
Bunu tüm MVC uç noktalarında etkinleştirmek için aşağıdaki gibi kullanılabilecek bir uzantı yöntemi vardır:
app.MapDefaultControllerRoute()
.BufferResponseStream();
Paylaşılan oturum durumu
'yi desteklemek Sessioniçin uç noktaların bunu uygulayan ISessionMetadata
meta veriler aracılığıyla kabul etmesi gerekir.
Öneri: Bunu tüm MVC uç noktalarında etkinleştirmek için aşağıdaki gibi kullanılabilecek bir uzantı yöntemi vardır:
app.MapDefaultControllerRoute()
.RequireSystemWebAdapterSession();
Bu, oturum deposunun bazı uygulamalarını da gerektirir. Buradaki seçeneklerin ayrıntıları için buraya bakın.
Uzak oturum, uygulama için ek uç noktayı kullanıma sunar
Uzak oturum desteği , çekirdek uygulamanın oturum bilgilerini almasını sağlayan bir uç noktayı kullanıma sunar. Bu durum, çekirdek uygulama ile çerçeve uygulaması arasında uzun süreli bir istek bulunmasına neden olabilir, ancak geçerli istek veya oturum zaman aşımıyla zaman aşımına uyacaktır (varsayılan olarak 20 dakikadır).
Öneri: Kullanılan API anahtarının güçlü olduğundan ve çerçeve uygulamasıyla bağlantının SSL üzerinden yapıldığından emin olun.
Çerçeve ve çekirdek uygulamalar için sanal dizinlerin aynı olması gerekir
Sanal dizin kurulumu, sistem içindeki yol oluşturma, yetkilendirme ve diğer hizmetler için kullanılır. Bu noktada, ASP.NET Framework'ün çalışma şekli nedeniyle farklı sanal dizinleri etkinleştirmek için güvenilir bir yöntem bulunamadı.
Yeniden kullanma: İki uygulamanızın aynı uygulama/sanal dizin düzenine sahip farklı sitelerde (konaklar ve/veya bağlantı noktaları) olduğundan emin olun.
ASP.NET Core
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin