我正在用VS2012进行开发,它也和VS2010一样。我正在开发一个Web应用程序项目。我在IIS上添加了一个虚拟应用程序,并将我的项目根文件夹设置为localhost/MyWebApp
。编辑aspx页面导致会话丢失
它经常发生,当我做一个简单的页面编辑(在.aspx文件)我的网站失去会议。我相信没有服务器端代码被更改或者没有runat=server
标记受到影响。
我该如何摆脱这个?
我正在用VS2012进行开发,它也和VS2010一样。我正在开发一个Web应用程序项目。我在IIS上添加了一个虚拟应用程序,并将我的项目根文件夹设置为localhost/MyWebApp
。编辑aspx页面导致会话丢失
它经常发生,当我做一个简单的页面编辑(在.aspx文件)我的网站失去会议。我相信没有服务器端代码被更改或者没有runat=server
标记受到影响。
我该如何摆脱这个?
在阐述大卫的评论:
文件变更通知
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之后将会回收利用 。
谢谢..我也发现[http://support.microsoft.com/kb/319947](http://support.microsoft.com/kb/319947)并给出这样的配置
回答汉斯五:
当使用缺省SessionState的模式 “是InProc”,你当应用程序池回收会议将 丢失。 Therer的原因是多方面 为什么这可能发生,而且当您更改ASPX文件:
ASP.NET取决于文件更改通知(FCN),看是否 应用更新。根据更改,应用程序 池将回收。如果您或您的应用程序正在将 目录添加到应用程序文件夹中并将其删除,则每次都将重新启动您的 应用程序池,因此请注意这些临时文件 。改变下列文件也将立即触发 重新启动应用程序池:
- 的web.config
- 的machine.config
- Global.asax的
- 任何bin目录或它的子目录
更新.aspx文件等导致重新编译最终还会触发应用程序池的重新启动。 system.web中的编译元素的 属性称为 numRecompilesBeforeAppRestart。默认值是20.这意味着 在20次重新编译之后,应用程序池将会回收。
页面编辑导致Web应用程序重新启动IIS中。您可能需要考虑将会话状态移至SQL服务器或IIS进程之外的某个位置。 – David