Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Web API 2控制器之外访问HttpActionContext_C#_.net_Asp.net Web Api_Asp.net Web Api2 - Fatal编程技术网

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)并将在某些托管场景中引发异常。