这是我简单的控制器代码 . 我第一次在服务器上部署,第一个用户点击我的API . 没有索赔 . 但现在任何用户都会调用我的api,他总是获得声明,因此计数为1 .

我的问题是,为什么WebAPI会在所有用户中保留所有声明?

[RoutePrefix("api/User")]
public class stackoverflowController : ApiController
{
    [Route("Info")]
    public String GetUserInfo(string sid)
    {
        var requestContext = Request.GetRequestContext();

        ClaimsPrincipal claimsPrincipal = requestContext.Principal as ClaimsPrincipal;
        ClaimsIdentity identity = claimsPrincipal.Identity as ClaimsIdentity;

        //int count = claimsPrincipal.Claims.Count();   //THIS ALWAYS RETURNS 1 AFTER FIRST CALL
        //int count2 = identity.Claims.Count();         //THIS ALWAYS RETURNS 1 AFTER FIRST CALL

        AddClaim(identity, new Claim("newClaimType", sid));

        return "Hello World!";
    }

    private static void AddClaim(ClaimsIdentity identity, Claim claim)
    {
        Claim first = identity?.FindFirst(claim.Type);
        if (first != null)
        {
            identity.TryRemoveClaim(first);
        }

        identity.AddClaim(claim);
    }
}

附:不,我不想像这样重置Principal或Identity:var id = new ClaimsIdentity(claim,“CustomApiKeyAuth”); actionContext.RequestContext.Principal = new ClaimsPrincipal(id);

不,我不想在第一行中删除我自己的Principal或Identity .

附:这不回答我的问题Persisting claims across requests