いくつかの.NETコードをデバッグするときに、ここで基本的なものが欠けています。
public static void CreateServiceSessionStore()
{
ServiceSessionStore serviceSessionStore = new ServiceSessionStore();
serviceSessionStore.SetIdentity(System.Threading.Thread.CurrentPrincipal.Identity);
System.Threading.Thread.CurrentPrincipal = serviceSessionStore;
// Here, CurrentPrincipal still isn't a serviceSessionStore!
}
このコードでは、すべてが陽気に進んでいるように見えます。ただし、デバッグして最後の行の直前にいるときは、System.Threading.Thread.CurrentPrincipalを見ています。値はWebSessionStoreオブジェクトであり、これは私が期待しているものであり、最後の行でServiceSessionStoreオブジェクトに変更する必要があると私は考えています。しかし、そうではありません。serviceSessionStoreを見ると、ServiceSessionStoreオブジェクトが保持されていますが、行が実行された後も、CurrentPrincipalにはWebSessionStoreオブジェクトが含まれています。エラーはスローされません。
さて、これらのオブジェクトが実際に行うこととは別に、誰かがCurrentPrincipalの更新を拒否しているように見える理由についてアイデアを提供できますか?