如何清除C#中的线程主体。

我有一个后台线程

Membership.ValidateUser(username, password);

然后将生成的Principal复制回主线程
AppDomain.CurrentDomain.SetThreadPrincipal(Thread.CurrentPrincipal);

这很好。但是,如果我注销,则想清除主体,如果将其设置为null,它将不执行任何操作。如果我尝试通过重新设置
AppDomain.CurrentDomain.SetThreadPrincipal(Thread.CurrentPrincipal);

我得到了错误
Default principal object cannot be set twice.

有任何想法吗?

最佳答案

我认为您无需关闭AppDomain并重新创建它就可以重置主体。调用SetThreadPrincipal只会得到一枪。

假设您使用的是在ValidateUser之后创建的自定义主体对象;您可能可以在主体上放置“注销”方法,以将其内部状态重置为未经身份验证的用户。

关于C#清除线程主体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/637510/

10-13 05:53