2

私はVS2012で開発していますが、VS2010でも同じです。私はWebアプリケーションプロジェクトに取り組んでいます。IISに仮想アプリケーションを追加し、プロジェクトのルートフォルダーをに設定しましたlocalhost/MyWebApp

(.aspxファイルで)単純なページ編集を行うと、サイトでセッションが失われることがよくあります。runat=serverサーバー側のコードが変更されたり、タグが影響を受けたりすることはないと確信しています。

どうすればこれを取り除くことができますか?

4

2 に答える 2

5

デビッドのコメントについて詳しく説明します。

ファイル変更通知

ASP.NET 2.0 は、ファイル変更通知 (FCN) に依存してアプリケーションが更新されたかどうかを確認し、変更の規模に応じてアプリケーション プールがリサイクルされます。ユーザーまたはアプリケーションがディレクトリをアプリケーション フォルダーに追加および削除している場合は、毎回アプリケーション プールを再起動することになります。

次のファイルを変更すると、アプリケーション プールもすぐに再起動されます。

web.config
machine.config
global.asax
Any file in the /bin directory or subfolders 

再コンパイルを引き起こす .aspx ファイルなどを更新すると、最終的にアプリケーション プールの再起動もトリガーされます。system.web の下に、numRecompilesBeforeAppRestart というコンパイル要素のプロパティがあります。デフォルト値は 20 です。これは、20 回の再コンパイル後にアプリケーション プールがリサイクルされることを意味します。

出典: Losing ASP.NET Sessions - アプリケーション プールがリサイクルされる理由

于 2013-01-02T14:55:21.273 に答える
3

Hans V からの回答:

デフォルトの SessionState モード "InProc" を使用すると、アプリケーション プールがリサイクルされるときにセッションが失われます。これが発生する理由は多数ありますが、aspx ファイルを変更した場合にも発生します。

ASP.NET は、ファイル変更通知 (FCN) に依存して、アプリケーションが更新されたかどうかを確認します。変更に応じて、アプリケーション プールはリサイクルされます。ユーザーまたはアプリケーションがアプリケーション フォルダーにディレクトリを追加および削除している場合は、毎回アプリケーション プールを再起動することになるため、これらの一時ファイルには注意してください。次のファイルを変更すると、アプリケーション プールの即時再起動もトリガーされます。

  • web.config
  • machine.config
  • グローバル.asax
  • bin ディレクトリまたはそのサブディレクトリ内のすべて

再コンパイルを引き起こす .aspx ファイルなどを更新すると、最終的にアプリケーション プールの再起動もトリガーされます。system.web の下に、numRecompilesBeforeAppRestart と呼ばれるコンパイル要素のプロパティがあります。デフォルト値は 20 です。これは、20 回の再コンパイル後にアプリケーション プールがリサイクルされることを意味します。

回答の参照

于 2013-01-02T14:55:32.503 に答える