2012-05-17 48 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