web-dev-qa-db-ja.com

ASP.NETセッション状態がWeb.configおよびGlobal.asaxで機能しない

私は自分のサイトの更新作業を行うために使用する管理ページを持っています。問題は、セッションが1分または30秒以内に期限切れになり、ユーザーがログアウトすることです。ルートフォルダのWeb.ConfigとAdminフォルダ内のWeb.Configでセッションを設定しましたが、それでもセッションはすぐに期限切れになります。 60分に設定しましたが、30秒または1分以内しか持続しません。これが私のルートフォルダのweb.configコンテンツ

<sessionState timeout="60" mode="InProc" 
      cookieless="false"></sessionState>


    <customErrors mode="Off">
    </customErrors>
    <trace enabled="true" />
    <authentication mode="Forms">
               <forms
    protection="All"
    timeout="120"
    domain="www.marpallichande.in"
    slidingExpiration="true"
    name="auth_cookie" />  

    </authentication>

これは、Adminフォルダー内のweb.cofingファイルの設定です

<sessionState timeout="60" mode="InProc"
      cookieless="false"></sessionState>

これはSession_Startメソッドの下のGlobal.asaxファイルの私の設定です

Session.Timeout=60;

セッションがすぐに期限切れになる方法がわかりません。または、セッション以外にログアウトする理由があります。

5
Guruprasad Rao

sessionStateタイムアウト値は分単位です。まず、Session.TimeOut(およびsessionStateタイムアウトを除く他のタイムアウト値)を削除して、そのままにして試してみます。また、2つの構成ファイルがある理由がわかりませんか?同じ設定ですか?

私は同様の設定をしていますが、設定ファイルは1つだけです

<sessionState mode="InProc" cookieless="false" timeout="10" /> 

10分に設定します。

5
skolte

書く <sessionState mode="InProc" cookieless="false" timeout="10" />アプリケーションのグローバルweb.configファイル。

session_OnEndという名前のサブルーチンをGlobal.asaxファイルに追加して、Session_OnEndイベントを定義します。 Session_OnEndサブルーチンは、メソッドが呼び出されたとき、またはセッションが期限切れになったときに実行されます。セッションに対して要求が行われずに、Timeoutプロパティで指定された分数が経過すると、セッションは期限切れになります。

Session_OnEndイベントは、セッション状態のModeプロパティがInProcに設定されている場合にのみサポートされます。

Session_onEndイベントは、global.asaxで次のように定義できます。

public void Session_OnEnd()
{
  // do your desired task when the session expires
}
2
Rashedul.Rubel

次のようなセッション状態設定については、ルートweb.configを確認してください。
//タイムアウトは分単位です
// InProcに関するglobal.asxの使用に関する注意: SessionStateModule.End Event

Session_OnEndイベントは、セッション状態のHttpSessionState.Modeプロパティ値がデフォルトであるInProcの場合にのみサポートされます。セッション状態モードがStateServerまたはSQLServerに設定されている場合、Global.asaxファイルのSession_OnEndイベントは無視されます。セッション状態のModeプロパティ値がCustomの場合、Session_OnEndイベントのサポートは、カスタムセッション状態ストアプロバイダーによって決定されます。

<system.web>
<sessionState mode="InProc" cookieless="false" timeout="30" />
</system.web>

これは1つの場所でのみ定義する必要があります。

1
DzSoundNirvana

数秒後自動的にページログアウトの場合、これはセッションの有効期限

 <sessionSate mode="StateServer" cookieless="false" timeout="940"/> 

web.configにコードを記述します

私は ここにリンクの説明を入力してください から解決策を見つけます

0
Syed Ayaz