0

私はこれを持っています:

<membership defaultProvider="DefaultMembershipProvider" userIsOnlineTimeWindow="15">

この:

<sessionState mode="InProc" customProvider="DefaultSessionProvider" cookieless="UseCookies" regenerateExpiredSessionId="true" timeout="15">

また、セッションがランダムにタイムアウトします。ページを次から次へと表示しているときにログアウトされる場合があります。何が原因でしょうか?

4

1 に答える 1

1

ASP.NET セッションを区別する必要があります。

<sessionState mode="InProc" customProvider="DefaultSessionProvider" cookieless="UseCookies" regenerateExpiredSessionId="true" timeout="15">

およびフォーム認証:

<authentication mode="Forms">
    <forms loginUrl="~/account/login" timeout="2800" />
</authentication>

ASP.NET セッションは、デフォルトで Web サーバーのメモリに保存されます。これの問題は、アプリケーションが Web サーバーによっていつでも再利用またはダウンされる可能性があり、セッションが失われることです。これは、たとえば、サーバーが CPU またはメモリのしきい値に達し、ほとんど制御できない場合に発生する可能性があります。ASP.NET セッションに信頼できる方法で何かを保存する場合は、アウトプロセス状態 (StateServerまたは などSqlServer) を使用していることを確認する必要があります。についての記事はこちらvarious session state modes

一方、フォーム認証は、認証されたユーザーを Cookie で追跡するために使用されます。それらはサーバー上で永続化されず、ASP.NET セッションと同じ制限を受けません。アプリケーションで ASP.NET セッションを使用する場合は、そのタイムアウトがフォーム認証 Cookie のタイムアウトと同じであること、およびプロセス外の永続状態を使用していることを確認する必要があります。

于 2013-03-17T17:08:22.863 に答える