2009-06-30 54 views
2

我正在編寫類似於購物車系統的silverlight應用程序。 此應用程序只能在用戶登錄到網站後從asp.net網站啓動。在基於asp.net會話的Silverlight應用程序中加載初始狀態

第一次加載時,應用程序將通過WCF服務向後端發送請求,以檢索購物車中的所有現有項目。

因此si​​lverlight應用程序需要知道當前用戶是誰,以找到要加載的購物車。

我發現有一對夫婦的方式,到目前爲止,但不愉快的任何人:

  1. 使用WCF ASPNET COMPAT。 silverlight可以通過詢問wcf服務來詢問當前用戶是誰。
  2. 通過使用xaml.InitParameters從頁面傳遞參數到xaml並傳入最少量的信息以標識序列化格式的用戶。通過查詢字符串
  3. 參數傳遞到XAML(顯然這也是可能的)

任何人都可以共享實現這一目標的最佳做法? 謝謝

回答

2

我們在我們的項目中使用第一個解決方案。在這種情況下,您不必創造任何類型的序列化格式。這種方法的缺點 - 在啓動時多出異步邏輯。

服務的例子:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
public class UserInfoService : IUserInfoService 
{ 
     public UserInfo GetUserInfo() 
     { 
       if (HttpContext.Current.User.Identity.IsAuthenticated) 
         return null; 

       var userInfo = new UserInfo 
       { 
         Login = HttpContext.Current.User.Identity.Name, 
         Fullname = ..., 
       }; 

       return userInfo; 
     } 
} 

通過initParams在或查詢字符串發送用戶ID是不是好主意,我認爲。這樣的事情應該更隱蔽。

真正重要的是驗證服務器上的用戶每個服務調用,因爲任何人都可以以類似於您的應用程序的方式調用您的服務。

HTH

相關問題