ASP.NET Web API アプリケーションを Web API 2 リリース候補に移植しています。このアプリケーションは、MessageHandler を使用して、HTTP ヘッダーを解析および復号化することにより、ユーザーを承認します。次に、適切な ClaimsPrincipal を作成し、 と の両方を設定HttpContext.Current.UserしThread.CurrentPrincipalます。
Web API 1.0 では、コントローラーはApiController.Userプロパティにアクセスして、以前にメッセージ ハンドラーで設定したプリンシパルを取得できました。Web API 2.0 では、User プロパティには、正しいGenericPrincipalにもかかわらず、実質的に空白の が含まれています。Thread.CurrentPrincipal
これは意図的なものですか?Web API 2 のバグですか (非常に可能性があります)。おそらくプリンシパルを正しく設定していませんか?
ApiController.Userに直接行くよりも「より正しい」ように見えたので、私は使用してきましたが、それはThread.CurrentPrincipal常に問題の可能な解決策です。