技術的には、はい。ただし、この慣行には反対することをお勧めしますが、REST API は完全にステートレスにする必要があります (Cookie やその他のクライアント側の状態は問題ありません)。
絶対にこれを行う必要がある場合は、次のように HTTP コンテキストを取得できます。
var context = Request.Properties["MS_HttpContext"] as HttpContext;
その時点で、そのSessionプロパティを使用してセッションを取得します。
これは、によって想定されている特定の契約を破ることに注意してSystem.Net.Http
ください。具体的には、API コントローラーは ASP.NET に結合されているため、自己ホストできないことを意味します。これに問題がなく、分散セッションを使用するようにすべてを再構築しない限り、API コントローラーが Web ファームから適切に機能しない可能性があるという事実に問題がない場合は、それを実行してください。
PS も使用IRequiresSessionState
できますが、コントローラー自体では使用できません。 で使用し、HttpControllerHandler
として設定する必要がありますRouteHandler
。このアプローチについては、この MSDN スレッドで説明されています。繰り返しますが、この考えを強く推奨することはできません。これは Web API の基本原則に違反していますが、本当に正当な理由がある場合は、もう少し再利用可能な別のオプションです。