2017-06-07 27 views
0

ASP.Net MVCアプリケーションに問題があります。 私は私のweb.configファイルに次のようしている:それは正常に動作しますが、時にはセッションがちょうど3の後に実行されます私のGlobal.asaxASP.NET MVCのセッションタイムアウト

public void Session_OnStart() 
    { 
     Session.Timeout = 525600; 
    } 

まだいくつかの回では

<authentication mode="Forms"> 
    <forms loginUrl="~/Login" timeout="525600" /> 
    </authentication> 
    <sessionState mode="InProc" timeout="525600" /> 
<machineKey validationKey="" decryptionKey="" validation="SHA1" decryption="AES" /> 

そしてこの - 5分。私は何が欠けている。最後にセッションを長くするためにできることはありますか? が

あなた

UPDATEをありがとうの中には、問題がリサイクル時間だったことを疑われたが、私の本番サーバー上で、私はそれをテストするためのリサイクル時間を変更するために必要な権限を持っていません。 最後に、セッションデータを手動でデータベースに保存し、Webセッションの有効期限が切れたときにデータベースから必要なデータを取得し、Webセッションに戻すように修正しました。

ご協力いただきありがとうございます。

+0

これはどのようにテストしましたか?あなたはそれが失敗していることにどのように気づきますか? –

+0

セッションがタイムアウトすると、アプリケーションは稼動しており、ユーザーはログアウトします。 – Naruto

+0

上記のように、セッション状態モードはInProcで、どこにでもEnableSessionStateを設定していません。 – Naruto

答えて

0

あなたは「インプロセス」にモードを設定し、あなたが述べたように、それは時々、時にはためにあなたのセッションはとても最初の確認なし他のコードを変更することを作る

を再起動する原因となるので、あなたのアプリケーションは多分リサイクル動作しない動作しますので、セッションタイムアウト

アプリケーションがリサイクルされていないことを確認してください。

+0

アプリケーションがリサイクルされていないことを確認する方法を教えてください。 – Naruto

+0

ログアプリケーションの開始イベント –

0

は、他のセッションは、「期限が切れる」ことができな方法、例えば:複数のタブ上の

  • ユーザーの数があります - 、一つのタブにログアウト後に他に戻って、それが動作するように期待しています。
  • サーバー側のコードが変更されると、サーバー上でセッションがクリアされる可能性があります。
  • サーバー上のコードは、Webファーム(複数のマシン)で実行されます。これは、 'InProc'のセッション状態に問題があります。ウェブ上の

インプロセスは、Webファーム上で、あなたのマシンキーがweb.configsに一致するように設定されていない場合は、お使いのログアウトが原因かもしれません

を農場リクエストは別のサーバー(認証Cookieが復号化されず、認証されない)に送られます。

InProcは、Webファームの状況ではうまく機能しません。セッション記憶域を別の場所に移動する別の方法(SQL Serverセッション状態がもう1つの組み込みオプションです)を選択する必要があります。中央のマシンにセッション状態を格納するための他のサードパーティオプションがあります。

+0

InProcはWebファームの問題を解決する方法を考えることができますか? – Naruto

+0

@Naruto-編集をご覧ください。 – Paddy

+0

私はWeb設定でマシンキーを設定していますが、その他の問題はありますか? – Naruto

関連する問題