私はIIS 6.0でASP.NET 2.0アプリケーションを実行しています。セッションタイムアウトをデフォルトの20分ではなく60分にします。私は以下をしました
私はまだ20分でセッションタイムアウトを受けています。他に必要なことはありますか?
フォーム認証を使用していますか?
フォーム認証では、タイムアウトに独自の値を使用します(デフォルトでは30分)。フォーム認証タイムアウトは、セッションをアクティブにしたままユーザーをログインページに送ります。これは、セッションがタイムアウトしたときにアプリが提供する動作のように見えることがあります。
<system.web>
<authentication mode="Forms">
<forms timeout="50"/>
</authentication>
<sessionState timeout="60" />
</system.web>
フォームのタイムアウトをセッションのタイムアウトよりも小さい値に設定すると、セッションデータを失うことなくログインするためのウィンドウがユーザーに表示されます。
Web.configファイルで次のコードブロックを使用してください。ここでのデフォルトのセッションタイムアウトは80分です。
<system.web>
<sessionState mode="InProc" cookieless="false" timeout="80" />
</system.web>
ポップアップアラートメッセージ付きのセッションタイムアウトについては、次のリンクを使用してください。
参考:上記の例はdevexpressのポップアップコントロールで行われているので、あなたは通常のポップアップコントロールでdevexpressのポップアップコントロールをカスタマイズ/置き換える必要があります。あなたのdevexpressを使用してカスタマイズする必要がない場合
私はweb.configやIISについて知りません。しかし、私はC#コードからあなたがそれを好きにできると信じています
Session.Timeout = 60; // 60 is number of minutes
それは通常あなたがする必要があるすべてです...
20分後にセッションが失われるのは、アイドル状態が原因であると確信していますか?.
セッションがクリアされる理由には多くの理由があります。 IISのイベントロギングを有効にしてから、イベントビューアを使用してセッションがクリアされた理由を確認できます。それが他の理由であると思われるかもしれません。
イベントメッセージのドキュメント と関連する イベントの表 を読むこともできます。
私の状況では、それはアプリケーションプールでした。 xx minの間アイドル状態になると再起動するように設定されています。再起動しないように設定した場合は、Web Configの値を使用しているようです。
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"
/>
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" />
認証を使用している場合は、web.configファイルに以下を追加することをお勧めします。
私の場合、タイムアウトするとユーザーはログインページにリダイレクトされます。
<authentication mode="Forms">
<forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>
IISセッションのタイムアウト値は従来の.aspアプリケーション専用です。これはIIS設定で制御されます。 あなたの場合、ASP.NETアプリケーションの場合、web.configで指定されたタイムアウト値のみが適用されます。
ASP.Netコア1.0以降(vNextまたはそれに使用される名前は何でも)のセッションは異なって実装されています。 Startup.cs
、void 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"]));
削除よりWebサイトのセッションタイムアウトが必要な場合
<authentication mode="Forms">
<forms timeout="50"/>
</authentication>
web.configファイルからのタグ。