My.User.Is验证了WPF中的错误

时间:2009-11-24 02:10:25

标签: wpf vb.net authentication forms-authentication genericprincipal

我不确切知道如何解释它,但这里基本上是我的问题可以如何重现:

  • 在VB.NET中创建一个WPF Windows应用程序项目(不要创建,只要继续阅读,除非你不相信我......)
  • 单击Window的标题以创建Window.Loaded事件处理程序并导航到它。
  • 将以下内容添加到事件处理程序中:
    My.User.CurrentPrincipal = New GenericPrincipal( _
    New GenericIdentity("username"), Nothing)
    Dim authenticated = My.User.CurrentPrincipal.IsAuthenticated
    MessageBox.Show(authenticated) 'True'
  • 返回窗口设计器并向Window1添加一个Button。
  • 单击按钮以创建其Click事件处理程序并导航到它。
  • 添加以下内容:
    Dim authenticated = My.User.CurrentPrincipal.IsAuthenticated
    MessageBox.Show(authenticated) 'False'
  • 运行应用程序,查看结果
  • 为什么地球现在错了??!?

更新:我在http://connect.microsoft.com/WPF/feedback/ViewFeedback.aspx?FeedbackID=513731报告了一个错误,请投票或发布解决方法,并在您提交时更新我,提前感谢。

任何变通办法都会受到欢迎!

1 个答案:

答案 0 :(得分:1)

我希望找到这种行为的确切解释,但没有这样的运气(还)。我认为我可以为你提供解决方法,即通过AppDomain.SetThreadPrincipal(通常是AppDomain。** CurrentDomain。** SetThreadPrincipal)分配自定义主体对象。

修改

事实证明有人在MSDN论坛上提到了这个问题。 discussion thread记录了我已经引用的解决方法,以及对行为的解释。