我正在使用使用 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 服务返回。