1

Windows 認証を使用する Silverlight ビジネス アプリケーションを使用しています。

ユーザーがマシンにサインインし、Silverlight URL にアクセスすると、表示されるデータは Windows サインインの詳細に基づいています。ユーザー名は、次のようにページのログイン ステータスから取得されます。

string fullUserName = WebContext.Current.User.DisplayName;
string userName = fullUserName.Substring(fullUserName.IndexOf('\\') + 1);

たとえば、fullUserNameここでは 'machineName\UserName' になり、2 行目で 'machineName\' を削除して、ユーザー名だけを残します。

ユーザー名がページから抽出されると、Web サービス呼び出しで使用され、そのユーザー アカウントに基づいてデータが返されます。

void OnLoad(object sender, RoutedEventArgs e)
    {
        string fullUserName = WebContext.Current.User.DisplayName;
        string userName = fullUserName.Substring(fullUserName.IndexOf('\\') + 1);


        WebService.Service1SoapClient client = new WebService.Service1SoapClient();

        client.IDReturnCompleted += new EventHandler<IDReturnCompletedEventArgs>(client_IDReturnCompleted);
        client.IDReturnAsync(userName);
    }

これは、読み込まれたときに最初のページであるホームページを除いて、Silverlight のすべてのページで正常に機能します。これは、コールバックが非同期であるため、ユーザー名の値がまだ初期化されていないためだと思います。しかし、ユーザーが新しいリンクをクリックするまでに、値は読み込まれています。

ホームページでこの値を取得することは可能ですか? ホームページの load イベントと InitializeComponent の両方で試しましたが、値はまだ Web サービスから返されていません。

4

1 に答える 1

0

純粋な Silverlight で現在のドメイン ユーザーを取得することはできないと思います。なぜそれが直接不可能なのか、この質問を確認してください。 Silverlight 内で現在の Windows ユーザー名を取得する

一方、この値を aspx ファイルから Silverlight に挿入することもできます。このリンクを参照してください。

于 2012-05-17T08:52:34.930 に答える