升级到.NET 4.5.1后,Thread.CurrentPrincipal会丢失

时间:2014-05-21 20:43:24

标签: asp.net-mvc asp.net-web-api current-principal

我试图研究这个错误,但我没有找到任何有用的信息。我们有一个使用.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丢失了。

一种解决方法是将Generic Principal设置为HTTPContext.User,它似乎正确地传递给我们的控制器代码,但我读过Thread.CurrentPrincipal是您应该用于Web Api的。

任何帮助都将不胜感激。

0 个答案:

没有答案