1

我正在使用使用 Windows 身份验证的 Silverlight 业务应用程序。

当用户登录计算机并访问 Silverlight URL 时,他们所看到的数据基于他们的 Windows 登录详细信息。用户名是从页面上的登录状态中检索的,如下所示 -

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

因此,例如fullUserName这里将是“machineName\UserName”,然后第二行去掉“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 的所有页面上都可以正常工作,除了主页,这是加载时的第一页。我相信这是由于回调是异步的,因此值用户名尚未初始化。但是当用户点击一个新链接时,该值已经加载。

是否可以在主页中获取此值?我已经在主页上的加载事件和 InitializeComponent 中尝试过,但该值尚未从 Web 服务返回。

4

1 回答 1

0

我认为用纯silverlight 获取当前域用户是不可能的。您可以检查这个问题,为什么它不能直接实现; 在 Silverlight 中获取当前 Windows 用户名

另一方面,您可以将此值从 aspx 文件注入到 silverlight,请参阅此链接

于 2012-05-17T08:52:34.930 回答