我正在使用VS2012开发它也与VS2010相同。我正在开发一个Web应用程序项目。我在IIS上添加了一个虚拟应用程序,并将我的项目根文件夹设置为localhost/MyWebApp
。
经常发生这种情况,当我进行简单的页面编辑(在.aspx文件上)时,我的网站会丢失会话。我确信没有更改服务器端代码或没有runat=server
标记受到影响。
我怎样摆脱这个?
答案 0 :(得分:5)
阐述大卫的评论:
文件更改通知
ASP.NET 2.0依赖于文件更改通知(FCN)来查看是否存在 应用程序已更新,具体取决于更改的大小 应用程序池将回收。如果您或您的申请是 添加和删除目录到应用程序文件夹,然后你 将每次都重新启动您的应用程序池。
更改以下文件也会导致立即重启 应用程序池:
web.config machine.config global.asax Any file in the /bin directory or subfolders
更新.aspx文件等导致重新编译最终会触发a 也重启应用程序池。有一个属性 system.web下的编译元素调用 numRecompilesBeforeAppRestart。默认值为20,表示 在20次重新编译后,应用程序池将重新编译。
答案 1 :(得分:3)
Hans V的回答:
当使用默认的SessionState模式“InProc”时,你的会话将会 当应用程序池回收时丢失。有很多原因 为什么会发生这种情况,而且当您更改aspx文件时:
ASP.NET依赖于文件更改通知(FCN)来查看是否存在 应用程序已更新。取决于应用程序的更改 游泳池将回收。如果您或您的应用程序正在添加和删除 目录到应用程序文件夹,您将重新启动您的 每次应用程序池,所以要小心那些临时的 文件。更改以下文件也会立即触发 重启应用程序池:
- web.config
- machine.config
- global.asax
- bin目录中的任何内容或其子目录
最终会更新导致重新编译的.aspx文件等 也会触发重新启动应用程序池。有一个 调用system.web下的编译元素的属性 numRecompilesBeforeAppRestart。默认值为20.这意味着 在20次重新编译后,应用程序池将重新编译。