【问题标题】:HttpContext.Current.User null with Web API v2 only projectHttpContext.Current.User null 与仅 Web API v2 项目
【发布时间】:2015-06-26 17:26:47
【问题描述】:

我的目标是将 IWA(集成 Windows 身份验证)与 .NET Web API 一起使用。我想将项目保留为一个没有 MVC 的 Web API 项目。

我在 Visual Studio 2013 Premium 中创建了两个项目:

  1. 第一个我选择了带有 Web API 模板的 ASP.NET Web 应用程序和 Windows 身份验证。这也包括 ASP.NET MVC。
  2. 第二个是带有 Web API 核心引用的 ASP.NET Web 应用程序空模板。

第一个成功了,我能够在调用时获得我的帐户 AD/Windows 身份:

 HttpContext.Current.User

第二次我无法获得我的 AD/Windows 身份,我尝试了以下所有方法:

 - HttpContext.Current.User
 - User
 - RequestContext.Principal

我需要从 Web API(第二个项目)调用什么来填充用户?

【问题讨论】:

  • 我之前也遇到过这个问题。据我发现,没有办法从 WebAPI 本身的上下文中获取用户。作为一种解决方法,我最终做的是让调用应用程序 (python) 将加密的用户凭据发送到 ApiController,然后从那里处理它。

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


【解决方案1】:

Web API v2 使用 OWIN (Katana),要使用 IIS 启用 IWA,您需要导入 Microsoft.Owin.Host.SystemWeb 库。这将 IIS 与填充用户的 ASP.NET 管道一起使用。

设置OWIN with Web API的说明,注释:

  1. 本文来自 2013 年,此后 Microsoft.Owin.Host.SystemWeb 不再处于预发布状态,例如从 NuGet 安装不需要“-pre”。
  2. 去掉Startup.cs的Configuration方法里面的内容。

【讨论】:

    猜你喜欢
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2018-05-17
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多