调试一些.NET代码,当我失去了一些东西基本在这里:在.NET中,System.Threading.Thread.CurrentPrincipal没有更新
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的想法吗?
我强烈怀疑没有权限(SecurityPermission)。我不明白为什么你不会看到抛出的异常。有趣的 – sehe
@sehe:值得入住。 – Beska