ASP.NET Core での HttpContext へのアクセス: ガイド
ASP.NET Core は、便利な HttpContext.Current
プロパティを削除することで、以前のバージョンとは異なります。この記事では、ASP.NET Core アプリケーション内の現在の HTTP コンテキストにアクセスするための効果的な戦略について概説します。
アーキテクチャ上の考慮事項とリファクタリング
古い ASP.NET バージョンから移行するには、多くの場合、コードの再構築が必要になります。 ASP.NET Core のベスト プラクティスを維持するには、別のクラス ライブラリから HttpContext
に直接アクセスすることを再検討する必要があります。
コントローラ内での HttpContext の利用
コントローラーは、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>
ミドルウェアでの HttpContext へのアクセス
カスタムミドルウェアは、HttpContext
メソッド内で Invoke
パラメータを利用します:
<code class="language-csharp">public async Task InvokeAsync(HttpContext context) { // Access and manipulate the HttpContext here... await _next(context); }</code>
IHttpContextAccessor の活用
依存関係注入によって管理されるクラスの場合、IHttpContextAccessor
インターフェイスは次のソリューションを提供します。
<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>
IHttpContextAccessor
内の ConfigureServices
メソッドに Startup.cs
を忘れずに登録してください:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... other service registrations ... }</code>
これらのメソッドは、ASP.NET Core の HttpContext.Current
に代わる強力な代替手段を提供し、HTTP コンテキスト情報への効率的かつ準拠したアクセスを保証します。
以上がHttpContext.Current を削除した後、ASP.NET Core で HttpContext にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。