My.User.IsAuthenticated ошибка в WPF

Я не знаю точно, как это объяснить, но вот в основном, как можно воспроизвести мою проблему:

  • Создайте проект приложения WPF Windows в VB.NET (не создавайте, просто продолжайте читать, если вы мне не верите...)
  • Щелкните заголовок окна, чтобы создать обработчик событий Window.Loaded и перейти к нему.
  • Добавьте следующее в обработчик событий:
    My.User.CurrentPrincipal = New GenericPrincipal( _
    New GenericIdentity("username"), Nothing)
    Dim authenticated = My.User.CurrentPrincipal.IsAuthenticated
    MessageBox.Show(authenticated) 'True'
  • Вернитесь к конструктору окон и добавьте кнопку в Window1.
  • Нажмите кнопку, чтобы создать ее обработчик события Click и перейти к ней.
  • Добавьте следующий контент к нему:
    Dim authenticated = My.User.CurrentPrincipal.IsAuthenticated
    MessageBox.Show(authenticated) 'False'
  • Запустите приложение, посмотрите результаты
  • ПОЧЕМУ НА ЗЕМЛЕ ЭТО ЛОЖЬ СЕЙЧАС!?!?

ОБНОВЛЕНИЕ: Я сообщил об ошибке по адресу: http://connect.microsoft.com/WPF/feedback/ViewFeedback.aspx?FeedbackID=513731, пожалуйста, проголосуйте или опубликуйте решение и обновите меня, когда вы это сделаете, заранее спасибо.

Любые обходные пути будут приветствоваться!

1 ответ

Решение

Я надеялся найти однозначное объяснение этому поведению, но не повезло (пока). Тем не менее я думаю, что могу предложить вам обходной путь, который заключается в назначении пользовательского основного объекта через AppDomain.SetThreadPrincipal (обычно AppDomain.**CurrentDomain.**SetThreadPrincipal).

РЕДАКТИРОВАТЬ:

Оказывается, кто-то поднял эту проблему на форумах MSDN. В ветке обсуждения документируются обходные пути, на которые я уже ссылался, а также объяснение поведения.

Другие вопросы по тегам