2010-08-12 97 views
4

我已經看到了關於Silverlight 2中提出了這個問題,但我還沒有看到有關Silverlight 4Silverlight 4中獲取當前用戶

任何問題,有沒有辦法讓運行在Silverlight 4.0的應用程序的當前用戶?我以爲我記得把它看作是4.0的一個功能,但我找不到它。 (也許這只是我的一廂情願。)我會想象它必須來自運行瀏覽器或瀏覽器本身的操作系統。 (該應用程序沒有在本地安裝,它在瀏覽器中運行)

我有一個解決方案,我調用Web服務方法,只是執行以下操作以獲取用戶名。不過,我想不必撥打網絡服務

HttpContext.Current.User.Identity.Name.ToUpper(); 

在此先感謝!

回答

1

您可能會發現更容易只是名稱傳遞到Silverlight應用程序作爲參數

+0

如果你可以動態地改變頁面的上下文(如在一個ASPX或MVC視圖)http://nerddawg.blogspot.com/2008/03/how-to-pass-initialization- params-to.html 而不是startPage = Page1寫入用戶名= <%= User.Identity.Name%> – mcintyre321 2010-08-12 19:23:34

+0

如果您確實需要,請讓Silverlight查詢用戶名的當前網址 – mcintyre321 2010-08-12 19:24:29

+0

對於遲到的回覆,抱歉。簡單的解決方案是打開通過身份驗證您的IIS網站。然後在default.aspx(或者什麼asp頁面啓動你的應用程序)把用戶放入這樣的InitParams中並在mainpage.xaml.cs中讀取它們:'System.Text.StringBuilder sb = new System.Text.StringBuilder( ); sb.Append(「「); InitParams.Text = sb.ToString()' – hewstone 2011-06-09 13:19:35

2

獲取標準Inbrowser Silverlight應用程序中的用戶名客戶端只是不會發生,如果可能的話,這將是一個非常糟糕的安全方面的明智之舉。

就個人而言,如果我有這個要求,我可能會使用一些Web服務,WCF或簡單的IHttpHandler服務器端。不過,我會傾向於把它稱爲「UserContext」,併發送XML。 XML將包含用戶名。這將允許將更多的用戶特定狀態添加到XML,因爲進一步的要求變得清晰。添加這些新的信息塊很容易。

1

在您的Silverlight對象標籤中添加一個名稱爲initParam的新參數(請注意套管)。通過這個,你可以傳遞值爲key = value [,key = value,...]對。 在這裏,我將一個關鍵的身份和價值作爲當前用戶身份名稱。

<param name="initParams" value='[email protected]'/> 

在你App.xaml.cs在Application_StartUp你有下面的代碼

private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    this.RootVisual = new MainPage(); 
    if (e.InitParams.ContainsKey("usrIdentity")) 
    { 
     //I have a public static string WindowsUser on my MainPage.xaml.cs 
     MainPage.WindowsUser = e.InitParams["usrIdentity"]; 
    } 
} 

這是hewstone的建議。 MS鏈接是http://msdn.microsoft.com/en-us/library/cc189004(v=vs.95).aspx

+0

此解決方案不起作用。 – 2015-04-26 06:53:25

0

對@Vishnoo Rath的更正;你應該試試這個:

<param name="initParams" 
     value="usrIdentity=<%=HttpContext.Current.User.Identity.Name%>"/>