我试图研究这个错误,但我没有找到任何有用的信息。我们有一个使用 .Net 4 的 ASP.NET Web Api 1.0 应用程序。我们将其升级到 .Net 4.5.1、MVC 5、Web Api 2 并发现我们将用户分配给 Thread.CurrentPrincipal 的问题[Authorize] 属性并稍后尝试提取该信息,但现在升级后,Thread.CurrentPrincipal 丢失了。
public class OAuthBearer : AuthorizeAttribute
public override void OnAuthorization(HttpActionContext actionContext)
{
(...)
Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity
(accessToken.ClientId, "OAuth Bearer"), accessToken.ApprovedScopes.ToArray());
(...)
}
}
以前在我们的控制器代码中,我们能够提取 Thread.CurrentPrincipal 并将其设置为 Generic Principal。但是现在我们升级后 Thread.CurrentPrincipal 丢失了。
一种解决方法是将通用主体设置为 HTTPContext.User,这似乎已正确传递给我们的控制器代码,但我读过 Thread.CurrentPrincipal 是您应该用于 Web Api 的。
任何帮助,将不胜感激。