-1

私はこの構文で私のウェブサイト(mvc3-.net4-iis7)にいくつかの情報を保存します:

HttpContext.Current.Application.Add(appKey, value);

これでデータを読み取ります:

 HttpContext.Current.Application[appKey];

正常に動作しますが、短時間(約20分)で動作せず、[appKey]が見つかりません。設定が必要ですか、それとも有効期限がありますか?

web.configでCookieの有効期限を7日に変更しましたが、まだ機能していません。

助けてくれてありがとう

4

2 に答える 2

2

これらの値はメモリに保存されます。アプリケーションがIISによってリサイクルされると、AppDomainがダウンし、メモリに保存されているすべてのものが失われます。IISはいつでもアプリケーションをリサイクルできることを忘れないでください。たとえば、特定のメモリ/CPUのしきい値が満たされている場合。したがって、アプリケーションがリサイクルされた後に設定せずに値を読み取ろうとすると、値は表示されません。

したがって、この情報をメモリに保存するのではなく、より永続的な場所を使用してこの情報を保存することを検討する必要があります。

web.configでCookieの有効期限を7日に変更しましたが、まだ機能していません。

アプリケーションの状態で保存する値は、Cookieとは何の関係もありません。それらはサーバーに保存されます。

于 2012-09-17T15:26:40.663 に答える
0

これはCookieとは関係ありません。HttpContext.Currentはセッションによって決定されます。デフォルトは20分です。

web.configで設定することにより、時間を増やすことができます。

<configuration>
… some config here …
<system.web>
  <sessionState timeout="XXX" />
…some more config
</system.web>
</configuration>

ダリンが持っているように、あなたのアプローチが実際にあなたがとにかくやるべきことであるかどうかは注目に値します。

于 2012-09-17T15:28:44.390 に答える