2009-06-30 13 views
2

私はショッピングカートシステムに似たSilverlightアプリケーションを作成しています。 このアプリは、ユーザーがサイトにログインした後にasp.netウェブサイトからのみ起動できます。asp.netセッションに基づくSilverlightアプリケーションの初期状態のロード

最初に読み込まれると、アプリはWCFサービスを通じてバックエンドにリクエストを送信し、ショッピングカート内の既存のアイテムをすべて取得します。

したがって、銀色のアプリは、現在のユーザーを知り、読み込むショッピングカートを見つける必要があります。

私はそれらのいずれかとの幸せないくつかの方法がこれまでに存在したが、ありません:

  1. compatのWCFのASPNETを使用しました。 silverlightは、wcfサービスに問い合わせることによって、現在のユーザーが誰であるかを尋ねることができます。
  2. xaml.InitParametersを使用してページからxamlにパラメータを渡し、シリアル化された形式でユーザーを識別するための最小限の情報を渡します。 XAMLへのクエリ文字列を通じて
  3. パスパラメータ(どうやらこれも可能である)

誰もがこれを達成するためのベストプラクティスを共有することはできますか? ありがとう

答えて

2

私たちのプロジェクトでは、最初の解決策を使用します。この場合、どのようなタイプのシリアライゼーション形式も作成してはいけません。このアプローチの短所 - 起動時に余分なの非同期ロジック。

サービスの例:initParamsまたはクエリ文字列を経由してユーザーIDを送信

[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; 
     } 
} 

は私が考える良いアイデアではありません。そのようなことはもっと隠されるべきです。

本当に重要なのは、サーバー上のユーザーをサービスコールで確認することです。誰もあなたのアプリケーションと同様の方法でサービスを呼び出せるからです。

HTH

関連する問題