2016-10-05 4 views
1

を設定するよりも速く満了し、以下のとおりです。ASP.NET MVC認証やセッションでは、私のASP.NET MVC5 <a href="http://ananyabarta.com" rel="nofollow">website</a> web.configファイルでのログインとセッションタイムアウトで

<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" slidingExpiration="true" timeout="60"/> 
    </authentication> 
    <sessionState mode="InProc" timeout="60"/>  
</system.web> 

それでもセッションまたは認証倍私たちの5人に分。 IISでタイムアウトを増やすために提供しているWebにアクセスし、IISでタイムアウトを増やした後でscreenshotを共有しましたが、何も変更されませんでした。なぜこれが起こっているか、何らかのアイデア。

答えて

1

それは、の問題でしたSystemIdleTime IISの変数。私はホスティングプロバイダにこの値を30分に増やすよう要求し、それはうまくいった。

30分のリクエストがない場合、アプリケーションプールがシャットダウンすると、すべてのセッション変数が消去されることを示します。この値は、Webサイトのweb.configファイルに設定されているセッションのタイムアウトを無効にします。この値を0に設定すると、アプリケーションプールが決してシャットダウンされないことを示し、その後web.configを使用してセッションのタイムアウトを制御できます。私もこのことが分かりました。article -

1

まず、Global.asaxの内側Session_Start法上のセッションタイムアウトを設定してみてください:

void Session_Start(object sender, EventArgs e) 
{ 
    Session.Timeout = 60; 
} 

注:インプロセスセッション状態を使用することにより、あなたのセッションは、すべてのIISアプリケーションプールがリサイクル一掃し、中問題アプリのプールは5分後にリサイクルされました。

  1. IISマネージャを開きます:上記の試みは動作しませんし、サーバーのIIS管理へのアクセス権を持っている場合は

    、これらの手順を実行します。

  2. アプリケーションプール=> [あなたのアプリケーションプール名] =>リサイクル/詳細設定を選択します。
  3. Regular time interval (minutes)を有効にして60に設定し、変更を適用します。

あなたは両方のIISマネージャ& SQL Server構成上のアクセス権を持っていない場合は、代わりにInProcモード(以下MSDNのリファレンスを参照してください)のDBベースのセッション状態管理をしようとする場合があります。

DBベースのセッション状態は例えば、SQLServerにmode属性を変更する必要があります。

<system.web> 
    <sessionState mode="SQLServer" sqlConnectionString="Integrated Security=SSPI;Data Source=SERVERNAME;Initial Catalog=DATABASE" /> 
</system.web> 

参考:

MSDN:https://msdn.microsoft.com/en-us/library/ms178586.aspx

Session expires too quickly in asp.net mvc4 application

+0

山本さん、ありがとうございました。IISの** SystemIdleTime **変数に問題がありました。私はホスティングプロバイダにこの値を変更するよう要求し、それはうまくいった。 私はこの良い**を見つけました。[記事](http://aspnetfaq.com/iis7-application-pool-idle-time-out-out-settings/)** – Sujoy

関連する問題