开发者

My.User.IsAuthenticated bug in WPF

开发者 https://www.devze.com 2022-12-12 13:30 出处:网络
I don\'t know exactly how to explain it, but here is basically how my problem could be reproduced: Create a WPF Windows Application Project in VB.NET (don\'t create, just keep reading this, unless y

I don't know exactly how to explain it, but here is basically how my problem could be reproduced:

  • Create a WPF Windows Application Project in VB.NET (don't create, just keep reading this, unless you don't believe me...)
  • Click the Window's header to create a Window.Loaded event-handler and to navigate to it.
  • Add the following to the event-handler:

    My.User.CurrentPrincipal = New GenericPrincipal( _

    New GenericIdentity("username"), Nothing)

    Dim authenticated = My.User.CurrentPrincipal.IsAuthenticated

    MessageBox.Show(authenticated) 'True'

  • Go back to the window designer and add a Button to the Window1.
  • Click the Button to create its Click event-handler and navigate to it.
  • Add th开发者_如何学编程e following content to it:

    Dim authenticated = My.User.CurrentPrincipal.IsAuthenticated

    MessageBox.Show(authenticated) 'False'

  • Run the application, see the results
  • WHY ON THE EARTH IS IT FALSE NOW!?!?

UPDATE: I reported a bug at: http://connect.microsoft.com/WPF/feedback/ViewFeedback.aspx?FeedbackID=513731, please vote or post a workaround, and update me when you do so, thanks in advance.

Any workarounds will be welcommed!


I was hoping to find a definitive explanation for this behavior, but no such luck (yet). I do think I can offer you a work-around, though, which is to assign the custom principal object via AppDomain.SetThreadPrincipal (typically AppDomain.**CurrentDomain.**SetThreadPrincipal).

EDIT:

It turns out someone brought up this issue on the MSDN Forums. The discussion thread documents the work-around I already referenced, along with an explanation of the behavior.

0

精彩评论

暂无评论...
验证码 换一张
取 消