web-dev-qa-db-ja.com

ASP.NETのセッションタイムアウト

私はIIS 6.0でASP.NET 2.0アプリケーションを実行しています。セッションタイムアウトをデフォルトの20分ではなく60分にします。私は以下をしました

  1. web.configに設定
  2. IIS manager/Webサイトのプロパティ/ ASP.NET構成設定でセッションタイムアウトを60分に設定します。
  3. アプリケーションプールのプロパティ/パフォーマンスで、アイドルタイムアウトを60分に設定します。

私はまだ20分でセッションタイムアウトを受けています。他に必要なことはありますか?

152
klone

フォーム認証を使用していますか?

フォーム認証では、タイムアウトに独自の値を使用します(デフォルトでは30分)。フォーム認証タイムアウトは、セッションをアクティブにしたままユーザーをログインページに送ります。これは、セッションがタイムアウトしたときにアプリが提供する動作のように見えることがあります。

<system.web>
    <authentication mode="Forms">
          <forms timeout="50"/>
    </authentication>

    <sessionState timeout="60"  />
</system.web>

フォームのタイムアウトをセッションのタイムアウトよりも小さい値に設定すると、セッションデータを失うことなくログインするためのウィンドウがユーザーに表示されます。

266
HectorMac

Web.configファイルで次のコードブロックを使用してください。ここでのデフォルトのセッションタイムアウトは80分です。

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

ポップアップアラートメッセージ付きのセッションタイムアウトについては、次のリンクを使用してください。

セッションタイムアウトの例

参考:上記の例はdevexpressのポップアップコントロールで行われているので、あなたは通常のポップアップコントロールでdevexpressのポップアップコントロールをカスタマイズ/置き換える必要があります。あなたのdevexpressを使用してカスタマイズする必要がない場合

38

私はweb.configやIISについて知りません。しかし、私はC#コードからあなたがそれを好きにできると信じています

Session.Timeout = 60; // 60 is number of minutes
37
Dmitris

それは通常あなたがする必要があるすべてです...

20分後にセッションが失われるのは、アイドル状態が原因であると確信していますか?.

セッションがクリアされる理由には多くの理由があります。 IISのイベントロギングを有効にしてから、イベントビューアを使用してセッションがクリアされた理由を確認できます。それが他の理由であると思われるかもしれません。

イベントメッセージのドキュメント と関連する イベントの表 を読むこともできます。

8
davidsleeps

私の状況では、それはアプリケーションプールでした。 xx minの間アイドル状態になると再起動するように設定されています。再起動しないように設定した場合は、Web Configの値を使用しているようです。

8
lyords

Machine.configに何か有効なものがありますか? web.configでセッションタイムアウトを設定すると、IISまたはmachine.configの設定が上書きされます。ただし、アプリケーションのサブフォルダー内にweb.configファイルがある場合、その設定はアプリケーションのルート.

また、私の記憶が正しければ、IISのタイムアウトは.aspページにのみ影響し、.aspxには影響しません。 web.configのセッションコードは正しいですか?次のようになります。

<sessionState
    mode="InProc"
    stateConnectionString="tcpip=127.0.0.1:42424"
    stateNetworkTimeout="60"
    sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
    cookieless="false"
    timeout="60"
/>
7
Cᴏʀʏ

https://usefulaspandcsharp.wordpress.com/tag/session-timeout/

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH" timeout="60" slidingExpiration="true" />
</authentication>

<sessionState mode="InProc" timeout="60" />
3
Paulo Tolentino

認証を使用している場合は、web.configファイルに以下を追加することをお勧めします。

私の場合、タイムアウトするとユーザーはログインページにリダイレクトされます。

<authentication mode="Forms">
    <forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>

この設定はIISにあります。

Settings

サーバーレベル、Webサイトレベル、または "ASP"の下のアプリレベルで見つけることができます。

ここでweb.configレベルで設定できると思います。自分でこれを確認してください。

<configuration>
   <system.web>

      <!-- Session Timeout in Minutes (Also in Global.asax) -->
       <sessionState timeout="1440"/>

   </system.web>
</configuration>
2

IISセッションのタイムアウト値は従来の.aspアプリケーション専用です。これはIIS設定で制御されます。 あなたの場合、ASP.NETアプリケーションの場合、web.configで指定されたタイムアウト値のみが適用されます。

1
Crying Freeman

ASP.Netコア1.0以降(vNextまたはそれに使用される名前は何でも)のセッションは異なって実装されています。 Startup.csvoid ConfigureServicesでセッションタイムアウト値を変更しました。

services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42));

appsettings.jsonファイルを使用したい場合は、次のようにします。

// Appsettings.json
"SessionOptions": {
    "IdleTimeout": "00:30:00"
}

// Startup.cs
services.AddSession(options => options.IdleTimeout = TimeSpan.Parse(Config.GetSection("SessionOptions")["IdleTimeout"]));
1
Matty

削除よりWebサイトのセッションタイムアウトが必要な場合

<authentication mode="Forms">
      <forms timeout="50"/>
</authentication>

web.configファイルからのタグ。

0
Nayan Hodar