3

IIS7で実行されているWebアプリケーションがあります。グローバル変数を静的変数を持つクラスに格納しています。このクラスはSessionVariablesと呼ばれ、その中には次のようなものがあります。

public class SessionVariables
{
    public static string PreferedColor= "Black"; 
}

この変数を別のページAccountSettings.aspxで設定しています。ここには、色の名前のドロップダウンがあります。ユーザーが色を選択し、[保存]をクリックすると、実行中のコードになります。

   protected void btnSave_click(object sender, EventArgs e)
    {
    SessionVariables.PreferedColor= ddlColorNames.Text;
    }

アプリケーションが5分間アイドル状態になった場合、アイドルタイムアウト(分)が5に設定されたため、アプリケーションプール設定が静的値をクリアしていたため、PreferedColorの静的値は常にデフォルトにリセットされます。IISアプリケーションから0に変更しましたプールと問題が解消されました。アプリケーションプールはもうリサイクルされていません。この設定に副作用があるかどうか知りたいのですが。

4

2 に答える 2

2

これは、長期間接続がない場合でも、アプリケーションプールプロセスが自動的にシャットダウンしないことを意味します。使用率の低い期間にリソースをクリアすることを心配していない場合は、リソースをオフのままにしておくことはまったく問題ありません。

他のリサイクルが発生した場合でも、変数をメモリだけでなく(データベースなどに)適切に格納する必要があることを回避したい場合は、変数をワイプします。

于 2012-07-04T14:47:34.097 に答える
2

解決しました。5分後に静的変数をクリアしていたのはweb.configにない構成でした。以下を追加すると、すべてうまくいきました。

<sessionState mode="InProc" cookieless="false" timeout="480"/>

 <forms loginUrl="~/Login.aspx"  slidingExpiration="true" timeout="480" />
于 2012-07-18T11:06:06.303 に答える