2011-01-18 9 views
-1

私の個人的なプロジェクトの1つを開発していて、何か問題が見つかりました。WCFとASP.NETのセッション状態の問題を伴うN層アーキテクチャ

  • フレームワーク:

    は、それは、n層アーキテクチャです。

  • WCFフレームワークサービス。
  • サーバー側のWCFフレームワークサービスに接続するASP.NETコントロール。
  • そのコントロールをホストするASP.NETクライアント。

WCFサービスはASP.NET互換モードです。

問題が何ですか?各要求は異なるセッションにあります。セッションの格納された値は、前に述べたように、各要求でリセットされるため、これがわかりました。

1) - 何らかの方法明らかが、私は確認をしたい - セッションは、クライアントごとにサーバー用ではないことをサーバー側でWCF Frameworkのサービスを呼び出すことを意味しない:

私は、2つの質問をしました?

2)最初の質問は、それぞれのリクエスト後に新しいセッションを取得する理由ですか?

最後に、私はそのWCFフレームワークサービスのASP.NET互換モードを無効にし、独自のセッション状態管理を開発しています。これは難しい作業ではありませんが、私は輪を再発明する友人ではありません。

ありがとうございます。

答えて

1

WCFのデフォルトインスタンシエーションモードはPer-Callです。各クライアントコール中にサービスコールオブジェクトが存在します。クライアントコールが終了すると、WCFはIDisposable.Disposeを呼び出します。インスタンス化タイプは次のように設定できます。

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
class MyWCFService : IMyWCFContract.... 

さらに2つのインスタンス化タイプがあります。セッション単位のサービスと共有可能なサービスです。

あなたは、あなたのWCFサービスを設定することができますので、あなたのプロジェクトのためのセッション単位を使用する必要があります

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 
class MyWCFService : IMyWCFContract.... 

を使用すると、MSDN 幸運の詳細

+0

感謝を見つけることができます!適切な解決策のように思えます。私は後で私の家でチェックします(私は@仕事です)。私は今のところ解決策としてマークしています。 –