現在のスレッドの 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
}