看来,当您在 VB.NET 中访问 My.Settings.Default 时,您的线程的 CurrentPrincipal 会发生变化。考虑以下代码。
Dim name = "admin"
Dim user = Membership.GetUser(name)
Dim identity = New GenericIdentity(user.UserName)
Dim principal = New RolePrincipal(identity)
System.Threading.Thread.CurrentPrincipal = principal
Debug.WriteLine(System.Threading.Thread.CurrentPrincipal.Identity.Name)
Dim x = My.MySettings.Default
Debug.WriteLine(System.Threading.Thread.CurrentPrincipal.Identity.Name)
这段代码的输出是
行政
我的域\我的用户名
这是预期的吗?它在任何地方都有记录吗?我找不到任何对它的引用。
它似乎也只在第一次访问 My.MySettings.Default 时执行此操作,这意味着解决方法可能是在尝试设置线程的 CurrentPrincipal 之前触摸该属性以对其进行初始化。这样做会有任何不良副作用吗?