0

すべてのコントローラーが拡張する基本コントローラーがあり、基本コントローラーでセッション処理を行います。ユーザーIDなどの保存など

さらに、次Userのような他のクラスを持つクラスがあります。

class User
{
   public int Id {set;get;}
   public virtual Location Location {set;get;}
}

データベースからこれを入力すると (コードを最初に EF を使用して)、明らかに場所が読み込まれません。これをそのままセッションに保存する必要がありますか?

主な質問はId、アプリケーションを再起動するたびにベースコントローラーに保存してセッションを失うことです。なぜそれが起こっているのですか?セッションタイムアウトを延長しましたが、役に立ちませんでした。

セッション処理のベスト プラクティスは何ですか? 私が使用できるラッパーはありますか?

4

2 に答える 2

3

Re:セッションにユーザーを保存する:セッションに再アタッチせずに「場所」プロパティにアクセスしないようにしてください。データが必要ない場合は、必要なデータを「場所」を持たない単純なオブジェクトにコピーし、それをセッションに保存するというオプションがあります。

Re: セッション コンテキストが失われます。これは、デフォルトではセッション データをメモリに保存するためです。これは、アプリケーションが再起動するたびに失われます。その状態をアプリケーションの再起動後も保持したい場合は、セッションにStateServerモードを使用する方法を検討してください(ただし、サーバーの再起動を保持したり、マルチサーバー ファームで作業したりする場合は、SQLServer ルートを使用することをお勧めします)。

于 2012-10-08T01:54:52.013 に答える
-1

必要なもの - このコードを web.config/system.web に追加します。

<machineKey validationKey="C5034160419189092507195D247C6FCD9F54D7A967372A23078E09F6440087328A874AD69955F441B526A265CC3A17CDEAAE8AB21A16868F549C3077C39C8E9F" decryptionKey="078FAD13FAC4E41EB0762F0B34E3F4990A144897C3387A70A746187F3AECD8DE" validation="SHA1" decryption="AES" />   

    <sessionState timeout="300" mode="InProc"></sessionState>

この machinKey はhttp://aspnetresources.com/tools/machineKeyから生成されました

于 2014-01-19T02:05:35.383 に答える