我正在使用使用Windows身份验证的Silverlight业务应用程序。
当用户登录到计算机并访问Silverlight URL时,他们显示的数据基于其Windows登录详细信息。用户名是从页面上的登录状态中检索的,如此 -
string fullUserName = WebContext.Current.User.DisplayName;
string userName = fullUserName.Substring(fullUserName.IndexOf('\\') + 1);
因此,例如fullUserName
这里将是'machineName \ UserName',然后第二行摆脱'machineName \'只留下用户名。
从页面中提取了一个用户名,它在webservice调用中用于根据该用户帐户恢复数据 -
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服务返回。
答案 0 :(得分:0)
我认为不可能让当前的域用户拥有纯银光。你可以查看这个问题为什么不能直接实现; Get current Windows user name within Silverlight
另一方面,您可以使用从aspx文件中将此值注入silverlight,请参阅this link。