2011-07-14 9 views
1

私は、組み込みのASP.NET認証フレームワークを使用するApache/mod_mono/MONO(2.8.1)を使用してASP.NET MVC 2アプリケーションをデプロイしています。MONO/ASP.NET認証の永続性

Apacheを再起動するか、mod_monoコントロールパネルを使用してモノサーバープロセスを再起動すると、ユーザーはログアウトされます。私はこれが起こることを望んでいない。

私は、カスタムプロファイル/メンバシップ/ロールプロバイダ(Redisデータベースを使用しています)を使用していますが、現在のところ最小限の実装があります。しかし、私の問題がどこに当てはまるのか分かりませんが、何か明白でないものがありますか?

ユーザーがログインしたときに.MONOAUTHクッキーが値を変更することに気づきました。そこで起こる必要のある持続性があると思います。

関連するドキュメントへの解決策または参考になるものはありますか?

答えて

3

注:メンバーシッププロバイダを使用しているときに以下の情報が異なる場合は、メンバーシッププロバイダ自体によってセッション状態が保持されている可能性があります。

"インプロセス"セッション状態のストレージを使用している可能性があります。これは、Webサーバープロセスを再起動するたびに、Webサーバープロセスのメモリスペースに格納されているすべてのセッション情報を消去していることを意味します。

セッション情報を消去しないようにするには、メモリ内サービス(Monoバージョンについては以下を参照)またはSQL Serverで実行するアウトプロセスのセッション状態サーバーを使用することができます。それ以外の場合は、代替ストレージ・メカニズムを使用する非公式のカスタムセッションストアプロバイダ(例えばMongoDBのなど)の数もあります

私はあなたがこのモノラルASP.NETセッション状態サーバーである、望むかもしれないものが見つかりました:http://manpages.ubuntu.com/manpages/gutsy/man1/asp-state2.1.html

最初のステップとして、web.configのsystem.web - > sessionStateプロパティを見てください。 mode = "InProc"に設定されている場合は、問題があります。

<sessionState 
mode="StateServer" 
stateConnectionString="tcpip=server:port" 
stateNetworkTimeout="number of seconds"/> 
+0

迅速な対応をありがとう!私はあなたが正しい道に私を入れたと信じています。私はあなたに投票して、さらに調査したらもう少し解説を加えます...私はちょうどこの仕事から瞬時に離れました。 –

+0

解決方法:validationKeyとdecryptionKeyを手動で設定します。これはモノでのバグであるように見えますが、これは自動生成時(デフォルト)にサーバーが異なる値を取るというものです。 –

3

ソリューション:それはより多くのようになります手動validationKeyとdecryptionKeyを設定します。

<のmachineKey validationKey = "blahblah" decryptionKey = "blahblah"/>

を私はこれはおそらくだと思いますモノでのバグは、自動生成されたときにサーバーが異なる値をとる(これがデフォルトです)。