【问题标题】:What has changed in the AuthorizeAttribute in ASP.NET Web API 2?ASP.NET Web API 2 中的 AuthorizeAttribute 发生了什么变化?
【发布时间】:2013-11-22 10:35:38
【问题描述】:

我已将一个项目和一组单元测试从 ASP.NET Web API 升级到 ASP.NET Web API 2。

我们正在使用自定义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 中设置主体?

【问题讨论】:

    标签: c# asp.net unit-testing asp.net-web-api


    【解决方案1】:

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

    转到http://aspnetwebstack.codeplex.com/workitem/1294 并找到“davidmatson 写于 9 月 13 日晚上 10:18”。

    【讨论】:

    • 谢谢!这花了 WAY, WAY 太久太久了。每个人都 +1 这个答案和这个问题!
    猜你喜欢
    • 2019-08-06
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2011-01-20
    • 2012-03-20
    相关资源
    最近更新 更多