2013-11-22 32 views
2

我已将项目和一组单元测试从ASP.NET Web API升级到ASP.NET Web API 2.ASP.NET Web API 2中的AuthorizeAttribute发生了哪些变化?

我们使用自定义DelegatingHandler作为自定义验证机制。

它将Thread.CurrentPrincipalHttpContext.Current.User设置为合适的System.Security.Claims.ClaimsPrincipal

  • 当在IIS中托管时,即正常运行时,两者都被设置。
  • 在单元测试中,只设置了Thread.CurrentPrincipal,因为HttpContext.Currentnull

由于升级到ASP.NET Web API 2,没有其他代码更改,Web托管版本可以正常工作,但单元测试失败。他们在升级前工作。

请问ASP.NET Web API 2现在是否需要本人被设置在HttpContext

回答

6

在web API 2中,您需要在请求对象上调用GetRequestContext()并将Principal属性设置为您的声明主体。

转到http://aspnetwebstack.codeplex.com/workitem/1294并找到“davidmatson在9月13日下午10点18分写道”。

+0

这很好,谢谢。 – tjrobinson

+0

谢谢!这花了WAY,WAY太长时间了。每个人都+1这个答案和这个问题! – jhilden

相关问题