課題: HttpContext
が使用できない場合、ASP.NET Core の静的メソッドまたはユーティリティ サービス内の HttpContext.Current
にどのようにアクセスしますか?
古い ASP.NET MVC フレームワークでは、開発者は HttpContext.Current
に依存していました。 このアプローチは ASP.NET Core では無効になりました。
解決策: 推奨される解決策には、IHttpContextAccessor
サービスの活用が含まれます。 このサービスにより、依存関係の注入により現在の HttpContext
.
IHttpContextAccessor
を実装する方法は次のとおりです:
まず、IHttpContextAccessor
をクラスのコンストラクターに挿入します。
<code class="language-csharp">public class MyComponent : IMyComponent { private readonly IHttpContextAccessor _httpContextAccessor; public MyComponent(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } // ... your methods ... }</code>
これで、セッションなどの HttpContext
プロパティにアクセスできるようになります:
<code class="language-csharp">public string RetrieveSessionData() { return _httpContextAccessor.HttpContext.Session.GetString("KEY"); }</code>
このメソッドは、非静的コンポーネント内の HttpContext
への適切なアクセスを保証し、静的コンテキストで直接アクセスする際の制限を解決します。 この機能を有効にするには、IHttpContextAccessor
(または .NET 6 以降では Startup.cs
) に Program.cs
を登録することを忘れないでください。
以上がASP.NET Core の静的メソッドで HttpContext にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。