Mengakses HttpContext.Current selepas berhijrah daripada Borang Web ASP.NET ke Teras ASP.NET
Apabila menaik taraf aplikasi ASP.NET Web Forms kepada ASP.NET Core, pembangun sering menghadapi cabaran: Bagaimana untuk mengakses HttpContext.Current
yang biasa? Kerana dalam ASP.NET Core, HttpContext.Current
telah dialih keluar. Artikel ini akan memperkenalkan beberapa cara untuk mengakses konteks HTTP semasa dalam ASP.NET Core.
Penyelesaian: Sesuaikan dengan kaedah akses konteks Teras ASP.NET
ASP.NET Core mengambil pendekatan berbeza untuk mengurus konteks HTTP. Anda perlu melaraskan struktur kod anda untuk menampung perubahan ini. Berikut ialah beberapa pilihan yang mungkin:
1 Gunakan atribut HttpContext
dalam pengawal
Dalam pengawal Teras ASP.NET, anda boleh mengakses konteks HTTP semasa secara terus melalui atribut HttpContext
:
<code class="language-csharp">public class HomeController : Controller { public IActionResult Index() { MyMethod(HttpContext); // ...其他代码... } }</code>
2. Gunakan parameter HttpContext
dalam perisian tengah
Jika anda menggunakan perisian tengah tersuai, objek HttpContext
akan dihantar secara automatik sebagai parameter kepada kaedah Invoke
:
<code class="language-csharp">public Task Invoke(HttpContext context) { // 使用 context 访问 HTTP 上下文 ... }</code>
3. Gunakan perkhidmatan IHttpContextAccessor
Untuk kelas yang diuruskan dalam sistem suntikan kebergantungan Teras ASP.NET, anda boleh menggunakan perkhidmatan IHttpContextAccessor
untuk mendapatkan konteks HTTP:
<code class="language-csharp">public MyMiddleware(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; }</code>
Anda kemudiannya boleh mengakses konteks dengan selamat:
<code class="language-csharp">var context = _httpContextAccessor.HttpContext; // 使用 context 访问 HTTP 上下文 ...</code>
Ingat untuk mendaftar ConfigureServices
dalam kaedah IHttpContextAccessor
:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ...其他代码... }</code>
Dengan kaedah di atas, anda boleh berjaya mengakses dan menggunakan konteks HTTP dalam ASP.NET Core, dengan itu melengkapkan pemindahan lancar daripada Borang Web ASP.NET. Kaedah yang anda pilih bergantung pada struktur kod anda dan keperluan khusus.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses HttpContext.Current dalam Teras ASP.NET Selepas Berhijrah dari Borang Web ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!