Tag: current principal

使用async / await设置Thread.CurrentPrincipal

下面是我试图在异步方法中将Thread.CurrentPrincipal设置为自定义UserPrincipal对象的简化版本,但是自定义对象在离开await后会丢失,即使它仍然在新的threadID 10上。 有没有办法在await中更改Thread.CurrentPrincipal并在以后使用它而不传入或返回它? 或者这不安全,永远不应该是异步的? 我知道有线程更改,但认为async / await将为我处理同步。 [TestMethod] public async Task AsyncTest() { var principalType = Thread.CurrentPrincipal.GetType().Name; // principalType = WindowsPrincipal // Thread.CurrentThread.ManagedThreadId = 11 await Task.Run(() => { // Tried putting await Task.Yield() here but didn’t help Thread.CurrentPrincipal = new UserPrincipal(Thread.CurrentPrincipal.Identity); principalType = Thread.CurrentPrincipal.GetType().Name; // principalType = UserPrincipal // Thread.CurrentThread.ManagedThreadId = 10 }); principalType […]

Thread.CurrentPrincipal.Identity vs HttpContext.User.Identity

可能重复: http.context.user和thread.currentprincipal之间的区别以及何时使用它们? 这两个在ASP.NET应用程序中有什么区别? 我知道当用户通过FormsAuthentication身份validation时,会设置HttpContext.User.Identity 。 但什么时候设置Thread.CurrentPrincipal.Identity ? 他们总是保持相同的价值吗? 对于无法访问HttpContext的应用程序的其他层,这仍然适用吗?