2012-05-17 24 views
1

我正在使用使用Windows身份验证的Silverlight业务应用程序。在主页中检索值

当用户登录到计算机并访问Silverlight URL时,它们所呈现的数据基于其Windows登录详细信息。用户名是从登录状态检索的页面上像所谓

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

因此,例如这里的fullUserName将“计算机名\用户名”,然后是第二线摆脱的“计算机名\”见好就收用户名。

一个用户名已经从网页中提取,它在一个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服务返回。

回答

0

我不认为有可能获得纯银光的当前域用户。你可以检查这个问题,为什么它不是直接可能的; Get current Windows user name within Silverlight

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

+0

谢谢,我实际上实现了在该问题中提出的Web方法到我的后端。只要我是第一次打电话给前端,它就可以正常工作。我唯一担心的是Web服务可能坐在具有不同登录凭证的服务器上。 – Ebikeneser