在主页中检索值

时间:2012-05-17 08:29:52

标签: c# silverlight web-services asynchronous

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

1 个答案:

答案 0 :(得分:0)

我认为不可能让当前的域用户拥有纯银光。你可以查看这个问题为什么不能直接实现; Get current Windows user name within Silverlight

另一方面,您可以使用从aspx文件中将此值注入silverlight,请参阅this link