Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Mengakses HttpContext dalam Teras ASP.NET Selepas Pembuangan HttpContext.Current?
Mengakses HttpContext dalam Teras ASP.NET: Panduan
ASP.NET Core menyimpang daripada pendahulunya dengan mengalih keluar harta HttpContext.Current
yang mudah. Artikel ini menggariskan strategi berkesan untuk mengakses konteks HTTP semasa dalam aplikasi Teras ASP.NET anda.
Pertimbangan Seni Bina dan Pemfaktoran Semula
Berhijrah daripada versi ASP.NET yang lebih lama selalunya memerlukan penstrukturan semula kod. Mengakses terus HttpContext
daripada perpustakaan kelas yang berasingan harus dipertimbangkan semula untuk mengekalkan amalan terbaik Teras ASP.NET.
Menggunakan HttpContext dalam Pengawal
Pengawal menawarkan akses terus ke harta HttpContext
:
<code class="language-csharp">public class HomeController : Controller { public IActionResult Index() { MyMethod(HttpContext); // ... other controller logic ... } public void MyMethod(Microsoft.AspNetCore.Http.HttpContext context) { string host = $"{context.Request.Scheme}://{context.Request.Host}"; // ... process HTTP context data ... } }</code>
Mengakses HttpContext dalam Middleware
Perisian tengah tersuai menggunakan parameter HttpContext
dalam kaedah Invoke
nya:
<code class="language-csharp">public async Task InvokeAsync(HttpContext context) { // Access and manipulate the HttpContext here... await _next(context); }</code>
Memanfaatkan IHttpContextAccessor
Untuk kelas yang diuruskan melalui suntikan pergantungan, antara muka IHttpContextAccessor
menyediakan penyelesaian:
<code class="language-csharp">public class MyService { private readonly IHttpContextAccessor _httpContextAccessor; public MyService(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public void MyMethod() { var context = _httpContextAccessor.HttpContext; // ... use the HttpContext ... } }</code>
Ingat untuk mendaftar IHttpContextAccessor
dalam kaedah ConfigureServices
anda dalam Startup.cs
:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... other service registrations ... }</code>
Kaedah ini menawarkan alternatif yang teguh kepada HttpContext.Current
dalam Teras ASP.NET, memastikan akses yang cekap dan mematuhi maklumat konteks HTTP.
Atas ialah kandungan terperinci Bagaimanakah Saya Mengakses HttpContext dalam Teras ASP.NET Selepas Pembuangan HttpContext.Current?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!