Thread.CurrentPrincipal ==改为==> Thread.CurrentPrincipal
原因:
虽然HttpContext.Current.User 和 Thread.CurrentPrincipal 返回的都是 IPrincipal
但是异步方法之后,由于线程变化,HttpContext.Current 会变成null
所以 要用 Thread.CurrentPrincipal 取值
例子:
var principal = HttpContext.Current != null ? HttpContext.Current.User : Thread.CurrentPrincipal;
return (principal as ClaimsPrincipal)?.FindFirst("user_code")?.Value;