2009-03-16 23 views
140

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

  1. アプリケーションで60分のアイドルタイムアウトを設定するIISマネージャー/ウェブサイトのプロパティ/ ASP.NET構成の設定で60分
  2. にweb.configファイルに
  3. 設定セッションタイムアウトを を設定を行っていますプールのプロパティ/パフォーマンス

まだ20分でセッションのタイムアウトが発生しています。私に必要なことは他にありますか?通常、あなたがする必要があることすべてである

+1

あなたは20分の測定方法についての情報を提供してください。 20分はセッションのタイムアウトで、他の種類ではないことを確認しましょう。 –

+8

upvote/downvote矢印の近くにあるチェックマークを使用して品質の回答にマークを付けてください。 –

+1

8年後、正解はまだ受け入れられません。 – Nathan

答えて

8

...

は、あなたが20分後に、セッションが失われていることを理由にかかわらず、アイドル状態からであることを確認しています...

ありますなぜセッションがクリアされるのかといった多くの理由があります。 IISのイベントログを有効にして、イベントビューアを使用してセッションがクリアされた理由を確認することができます。おそらく他の理由が考えられますか?

documentation for event messagesと関連するtable of eventsを読むこともできます。

31

web.configやIISについてよくわかりません。 は、しかし、私はC#のコードから、あなたが効果を取るかもしれないのmachine.configには何も持っていますか

Session.Timeout = 60; // 60 is number of minutes 
+21

これは、現在のセッションのタイムアウトのみ調整しますか?または、アプリケーション全体のタイムアウトを調整しますか? – Johncl

+1

[documentation](https://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.timeout%28v=vs.110%29.aspx)のどれもが 'Sessionを設定していることを示していません。 Timeout'はweb.configやIISを使用する場合とは異なりますので、アプリケーション全体を対象としています。 – Drasive

+0

@Draiveは正しいと思いますが、少なくとも2つのクライアントをサーバーに接続し、アイドルセッションのタイムアウトをチェックすることで証明されなければなりません。 – QMaster

7

のようにそれを行うことができると信じていますか? web.configでセッションのタイムアウトを設定すると、IISまたはmachine.configの設定が上書きされますが、アプリケーションのサブフォルダのどこかにweb.configファイルがある場合、その設定はアプリケーションのルートにある設定を上書きします。

また、正しく覚えていれば、IISのタイムアウトは.aspxではなく.aspページにのみ影響します。 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" 
/> 
250

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

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

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

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

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

+0

認証モードの設定が正しいです。今は大丈夫だと思う。ありがとうございます – klone

+0

フォーム認証のクッキーについて:http://support.microsoft.com/kb/910443 –

+7

私はWindows認証を使用していますか? – HOY

-2

IISでセッションタイムアウト値を変更したら、IISを再起動してください。 これを実現するには、コマンドプロンプトに移動します。 IISRESETと入力し、Enterキーを押します。

+0

web.configファイルを編集すると、自動的にIISがリセットされます。 –

33

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

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

次のリンクを使用して、セッションタイムアウトとポップアップアラートメッセージが表示されます。

Session Timeout Example

FYI:あなたは/カスタマイズ通常のポップアップコントロールとDevExpress社ポップアップコントロールを交換する必要があるので、上記の例は、DevExpress社のポップアップ制御で行われます。 devexpressをカスタマイズする必要がない場合

3

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

は、ユーザーがタイミングアウト時に、ログインページにリダイレクトされます。私のような状況では

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

web.configに配置した後、ここでエラーが発生しました。 –

6

、それはアプリケーションプールでした。 xx分のアイドル時に再起動するように設定されています。再起動しないように設定すると、Web Configの値が使用されているようです。

0

web.configファイルから

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

タグを削除するよりも、あなたは、ウェブサイトのセッションタイムアウトを希望している場合。

0

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

アプリケーションのSessionオブジェクトに割り当てられた時間を分単位で指定します。ユーザーがタイムアウト期間内にページをリフレッシュまたは要求しない場合、セッションは終了します。

IIS 6.0:許容される最小値は1分で、最大値は 1440分です。

Session.Timeout = 600; 
1

IISのセッションは、値が唯一、これはIISの設定で制御されている古典の.aspアプリケーションのためにあるタイムアウト。 あなたの場合ASP.NETアプリケーションの場合、web.config指定のタイムアウト値のみが適用されます。

1

あなたはここでIISの設定を見つけることができます。

Settings

のそれは、「ASP」の下で、サーバーレベル、Webサイトレベル、またはアプリケーションレベルで見つけることができます。

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

<configuration> 
    <system.web> 

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

    </system.web> 
</configuration> 
2

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" /> 
+2

ようこそへスタックオーバーフロー。これは正しい解決策かもしれませんが、一般的には何らかの説明も含める方が良いです。 – Gary99

関連する問題