在调试一些 .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 的想法吗?