UPDATE — process to replicate issue:
1) Create a website project at c:\projects\restart-demo
2) Add default web.config and a dummy aspx page test.aspx
3) Map IIS to point to the root folder c:\projects\restart-demo
4) Monitor application restarts using perfmon, health monitoring, tracking in global.asax Application_End, etc.
5) Request page in browser http://localhost/test.aspx
application start
6) Create new folder c:\projects\restart-demo\asdf
application end
7) Request page in browser http://localhost/test.aspx
application start
8) Rename folder c:\projects\restart-demo\asdf to c:\projects\restart-demo\asdf1
application end
end update
We are using a back-end CMS to generate files and folders in an ASP.NET site.
Users are able to create/modify/delete files and push these out to the web farm.
One problem we have noticed:
When the user creates, renames or deletes a folder, it causes the App
Domain to restart. As a consequence,
session, cache, etc. are all lost.
Note it doesn’t need to be a special folder like /bin or /App_Code either.
Is there any way to prevent this behavior?
It is really hampering performance for two reasons:
- Cache is dumped when app domain restarts
- App domain needs to be re-built after restart
This code appears to resolve the issue, when added to Application_Start() in Global.asax:
http://dotnetslackers.com/Community/blogs/haissam/archive/2008/11/12/disable-session-expiration-when-using-directory-delete.aspx
With these changes, I can create/modify/delete folders without causing the application to restart.
Not clear if this is the best solution — Don’t know if there will be unwanted side effects due to calling StopMonitoring.