C# 在Web API 2控制器之外访问HttpActionContext
在控制器类中,我可以执行以下操作:C# 在Web API 2控制器之外访问HttpActionContext,c#,.net,asp.net-web-api,asp.net-web-api2,C#,.net,Asp.net Web Api,Asp.net Web Api2,在控制器类中,我可以执行以下操作: var userId = this.ActionContext.RequestContext.Principal.Identity.Name; 但是我有一个soap头,我想把这个值传递给它。使用soap头的行为是使用依赖项注入设置的。因此,虽然它是为每个调用创建的,但它不是在控制器中创建的 所以我想知道,有没有一种方法可以在控制器之外访问WebAPI2的HttpActionContext。理想情况下,我想要这样的东西:\ HttpActionContext.
var userId = this.ActionContext.RequestContext.Principal.Identity.Name;
但是我有一个soap头,我想把这个值传递给它。使用soap头的行为是使用依赖项注入设置的。因此,虽然它是为每个调用创建的,但它不是在控制器中创建的
所以我想知道,有没有一种方法可以在控制器之外访问WebAPI2的HttpActionContext。理想情况下,我想要这样的东西:\
HttpActionContext.CurrentInstance.RequestContext.Principal.Identity.Name;
但是当然,CurrentInstance
不作为HttpActionContext
的静态成员存在
但是,没有控制器,是否有其他方法可以实现此目的?您可以使用以下命令访问标识名
System.Web.HttpContext.Current.User.Identity.Name
如果目标是访问主体,那么您可以从线程或httpcontext获得它。线程。CurrentPrincipal是您想要的。这仅在您引入System.Web时有效,并且由于性能原因不建议这样做。这没有回答所述问题(静态获取HttpActionContext)并将在某些托管场景中引发异常。