【发布时间】:2011-01-15 23:16:55
【问题描述】:
更新——复制问题的过程:
1) 在 c:\projects\restart-demo
创建网站项目2) 添加默认 web.config 和一个虚拟 aspx 页面 test.aspx
3) 映射 IIS 以指向根文件夹 c:\projects\restart-demo
4) 使用 perfmon 监控应用程序重启、健康监控、跟踪 global.asax Application_End 等。
5) 浏览器中的请求页面http://localhost/test.aspx
应用启动
6) 创建新文件夹c:\projects\restart-demo\asdf
申请结束
7) 浏览器中的请求页面http://localhost/test.aspx
应用启动
8) 将文件夹 c:\projects\restart-demo\asdf 重命名为 c:\projects\restart-demo\asdf1
申请结束
结束更新
我们正在使用后端 CMS 在 ASP.NET 站点中生成文件和文件夹。
用户可以创建/修改/删除文件并将它们推送到网络农场。
我们注意到的一个问题:
当用户创建、重命名或删除文件夹时,会导致App 要重新启动的域。作为结果, session、缓存等全部丢失。
请注意,它也不需要是像 /bin 或 /App_Code 这样的特殊文件夹。
有没有办法防止这种行为?
这确实会影响性能,原因有两个:
- 应用域重启时缓存被转储
- 重启后需要重新构建应用域
【问题讨论】:
-
这种情况是否 100% 发生,或者说,创建了一定数量,例如每 15 次更改?
-
您描述的行为并不典型。你能给我们一些更多的上下文信息代码吗?
-
@Nick:这种情况每次都会发生。
-
@Nathan,我已经发布了重现问题的步骤。
-
假设接受的答案解决了您的问题。你能告诉我你在哪里添加下面的代码以及你从哪里调用它。我尝试在我的 Global.asax 和控制器文件中这样做,但没有任何运气。如果您可以编辑您的问题并将该信息放在最后,那就太好了:)
标签: asp.net content-management-system appdomain application-pool