C# Httpcontext.current在控制器外部为null

C# Httpcontext.current在控制器外部为null,c#,asp.net-identity,C#,Asp.net Identity,在登录我得到的每个用户时,都会分配一个CompanyId作为声明。我可以毫无问题地在WebApiController中找到此声明。但如果我尝试在控制器方法之外访问它,那么HttpContext.Current将变为null 我如何在控制器之外实现我的索赔,或者我应该使用什么解决方案来处理我的身份 public class ProductsController : ApiController { private readonly ProductRepository _productRepo

在登录我得到的每个用户时,都会分配一个CompanyId作为声明。我可以毫无问题地在WebApiController中找到此声明。但如果我尝试在控制器方法之外访问它,那么HttpContext.Current将变为null

我如何在控制器之外实现我的索赔,或者我应该使用什么解决方案来处理我的身份

public class ProductsController : ApiController
{
    private readonly ProductRepository _productRepo = new ProductRepository();
    private readonly string companyId = MiniHelper.GetCompanyId();

    [Route("ProductList")]
    [EnableQuery()]
    public IQueryable<Product> GetProductList()
    {
        return _productRepo.GetProducts().AsQueryable().Where(u => u.UserId == companyId);
    }
}

public static class MiniHelper
{
    public static string GetCompanyId()
    {
        var identity = (ClaimsIdentity)HttpContext.Current.User.Identity;
        if (identity == null)
            return string.Empty;
        return identity.Claims.Where(a => a.Type == "CompanyId").Select(v => v.Value).FirstOrDefault();
    }
}

HttpContext.Current为null,因为您试图从HttpApplication处理管道访问它

一个简单的解决方案是将identity作为参数解析到helper方法中