ASP.NET Web フォームから ASP.NET Core への移行後の HttpContext.Current へのアクセス
ASP.NET Web フォーム アプリケーションを ASP.NET Core にアップグレードする場合、開発者はよく課題に直面します。使い慣れた HttpContext.Current
にアクセスするにはどうすればよいでしょうか? ASP.NET Core では HttpContext.Current
が削除されているためです。 この記事では、ASP.NET Core で現在の HTTP コンテキストにアクセスするいくつかの方法を紹介します。
解決策: ASP.NET Core のコンテキスト アクセス メソッドに適応する
ASP.NET Core は、HTTP コンテキストの管理に異なるアプローチを採用しています。 この変更に対応するにはコード構造を調整する必要があります。 考えられるオプションはいくつかあります:
1. コントローラー HttpContext
で
ASP.NET Core のコントローラーでは、HttpContext
属性を通じて現在の HTTP コンテキストに直接アクセスできます:
<code class="language-csharp">public class HomeController : Controller { public IActionResult Index() { MyMethod(HttpContext); // ...其他代码... } }</code>
2. ミドルウェア HttpContext
で
カスタムミドルウェアを使用している場合、HttpContext
オブジェクトはパラメータとして Invoke
メソッドに自動的に渡されます:
<code class="language-csharp">public Task Invoke(HttpContext context) { // 使用 context 访问 HTTP 上下文 ... }</code>
3. IHttpContextAccessor
サービスを使用する
ASP.NET Core 依存関係注入システムで管理されるクラスの場合、IHttpContextAccessor
サービスを使用して HTTP コンテキストを取得できます。
<code class="language-csharp">public MyMiddleware(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; }</code>
これで、コンテキストに安全にアクセスできるようになります:
<code class="language-csharp">var context = _httpContextAccessor.HttpContext; // 使用 context 访问 HTTP 上下文 ...</code>
ConfigureServices
メソッドに IHttpContextAccessor
を忘れずに登録してください:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ...其他代码... }</code>
上記の方法を使用すると、ASP.NET Core の HTTP コンテキストに正常にアクセスして使用できるため、ASP.NET Web フォームからのスムーズな移行が完了します。 どの方法を選択するかは、コード構造と特定のニーズによって異なります。
以上がASP.NET Web フォームから移行した後、ASP.NET Core で HttpContext.Current にアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。