如何清除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/