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. В ветке обсуждения документируются обходные пути, на которые я уже ссылался, а также объяснение поведения.