1

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)

このコードの出力は

管理者

MyDomain\MyUserName

これは期待されていますか?それはどこかに文書化されていますか?私はそれへの参照を見つけることができませんでした。

また、これは My.MySettings.Default が初めてアクセスされたときにのみ行われるようです。つまり、回避策として、スレッドの CurrentPrincipal を設定する前に、プロパティに触れて初期化することをお勧めします。それを行うことで望ましくない副作用はありますか?

4

1 に答える 1