Does any change in any file inside bin folder cause application recycle in ASP.NET web application?
Solution 1:
First, i can not provide a link to an official documentation. But from what i've read every change in the bin-folder(incl. subfolders) will cause the IIS to recycle the application domain.
Abrupt Application Pool Recycling
Any modifications in the Application’s BIN Directory
Making changes in any Configuration File/s, like Web.config or others ( if you have any specific config file in your application say in a directory called App_Config).
Making modifications in the Source code files in APP_CODE Directory. This maybe change in any Source code files, or adding or deleting files from this directory.
Making changes in the Global.asax file
Making Changes in the Machine.config file.
Making any modifications in the Web Application’s Root Directory. This means creating files/subdirectories on the fly can lead to application pool recycling.
Modifications for references of Web Services of App_WebReferences directory.
Modifying the Security Settings of any directory in the Root directory. (Like specifying read security rights for everyone or any other specific user or user group.)
Here's some reading:
- What causes an application pool in IIS to recycle?
- http://christopherdeweese.com/blog2/post/beware-writing-to-the-bin-folder-in-iis-hosted-services
- What does an IISReset do?
- http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add/recycling
- Managing, Tuning, and Configuring Application Pools in IIS 7.0
- http://varunvns.wordpress.com/2011/07/04/application-pool-restarts/
Solution 2:
NOPE, updating a dll file in the bin folder DOES NOT cause a recycle. At least not with .NET 4.7 on IIS 10 and later
First, what is a "recycle"?
It's when IIS launches a new instance of w3wp
process and the old one is being "politely" terminated (after finishing up on all the requests and background tasks registered with IRegisteredObject
)
What happens when you update a file in /bin?
ASP.NET does a hot-reload: it detects the update and uses the new version of the .dll for new page requests from then on. I.e. reloads the "app-domain". But this happens within the same w3wp
process. (source)
I just checked this on IIS 10 windows 2016 machine: launched Task Manager and repalce the main .dll file - the w3wp
process kept running, nothing happened.