如果可以阻止当前线程的 IPrincipal 在应用程序域边界上传播,有人会这样做吗?我无法控制分配给线程的 IPrincipal,但我可以控制创建应用程序域。
(我想这样做的原因是为了防止在主体对象类型的程序集在其他域中不可用时发生序列化错误。)
编辑:ExecutionContext.SuppressFlow
看起来很有希望,但似乎没有实现目标。以下打印“MyIdentity”:
static void Main ()
{
ExecutionContext.SuppressFlow ();
Thread.CurrentPrincipal = new GenericPrincipal (new GenericIdentity ("MyIdentity"), "Role".Split ());
AppDomain.CreateDomain ("New domain").DoCallBack (Isolated);
}
static void Isolated ()
{
Console.WriteLine ("Current principal: " + Thread.CurrentPrincipal.Identity.Name); // MyIdentity
}