1

正確に説明する方法はわかりませんが、基本的に私の問題を再現する方法は次のとおりです。

  • VB.NETでWPFWindowsアプリケーションプロジェクトを作成します(作成しないでください。信じられない場合を除いて、これを読み続けてください...)
  • ウィンドウのヘッダーをクリックして、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でバグを報告しました。投票するか、回避策を投稿してください。そうしたら、事前に感謝します。

どんな回避策も歓迎されます!

4

1 に答える 1

1

私はこの振る舞いの決定的な説明を見つけたいと思っていましたが、そのような運は(まだ)ありませんでした。ただし、回避策を提供できると思います。これは、AppDomain.SetThreadPrincipal(通常はAppDomain。**CurrentDomain。**SetThreadPrincipal)を介してカスタムプリンシパルオブジェクトを割り当てることです。

編集:

誰かがMSDNフォーラムでこの問題を提起したことが判明しました。ディスカッションスレッドには、動作の説明とともに、すでに参照した回避策が記載されています。

于 2009-11-30T21:19:53.543 に答える