有沒有人能夠阻止當前線程的IPrincipal在應用程序域邊界上傳播?我無法控制分配給該線程的IPrincipal,但我確實可以控制創建應用程序域。防止Thread.CurrentPrincipal跨應用程序域傳播
(我想這樣做的原因是爲了防止序列化錯誤從存在的,如果主要對象類型的組件在其他領域使用。)
編輯: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
}
如果任何人試圖解決一個不起眼像這樣的問題:我可以通過啓動一個線程並將線程內的Thread.CurrentPrincipal設置爲所需的主體來獲得所需的內容。然後我可以在該線程中調用''''AppDomain.DoCallBack''來獲得所需的結果。 – tuespetre 2014-06-03 12:58:11