Thoughts on IIS Configuration Changes and when it takes effect

Question:

Hello! I follow you blog daily. Good stuff!

On my work I'm responsible for a web server, running a web site with +150k users. (Win2k3) The application is split into different modules, and divided into different application pools. (Some are Framework 1.1 and some 2.0)

Now, do you have any info on exactly WHAT and WHAT NOT I can keep changing without making an iisreset?

- Edit a web.config file. Need a iisreset or just stop/start the application pool?

- Change settings to a virtual directory (like Require SSL). Just hit Apply/OK? Or iisreset is needed?

- Update the dll-files on an application. Start/stop application pool is enough?

- Update the aspx-files on an application. Start/stop application pool is enough?

Any guidance?

Answer:

I am not aware of any comprehensive prescriptive guidance on which configuration changes require what server state change (if any) to take effect. Your questions actually span both IIS and ASP.Net, two independent products that you happen to use in collaboration.

All I can tell you is that the product teams for both IIS and ASP.Net try to make as many of their configuration changes take effect immediately... without requiring a reset of anything... except for the few changes that are "global" in scope or otherwise hard to synchronize without recycling worker processes or restarting IIS.

Unfortunately, it is not easy for us to enumerate the settings and their behaviors because it is often tied to implementation details. For example:

  • ISAPI Filters changes do not all process the same way - site ISAPI Filters can be added and removed and immediately take effect, but global ISAPI Filters require restarting IIS (in IIS5 Compatibility Mode) or recycling the application pool ( in IIS6 Worker Process Isolation Mode) to take effect.
  • Application Pool settings take effect on startup of the application pool's worker process(s)... so you can control whether every application pool property change causes a recycle (i.e. changes take effect immediately) or that settings take effect on the subsequent recycle through whatever means.

Anyways, here are the answers to your specific questions. None of them require IISRESET, and many take effect immediately:

  • On IIS6, web.config is an ASP.Net concept totally unrelated to IIS. Any change in the web.config file triggers a reload of the AppDomain, so settings from the web.config take effect immediately. No iisreset/recycle required.
  • Changing IIS Virtual Directory settings take effect immediately, no iisreset/recycle required.
  • Updating DLL files in the ASP.Net /bin directory trigger a reload of the AppDomain so changes take effect immediately. Updating ISAPI DLL files is a little more complicated, as described in this blog entry, and require a recycle of the application pool.
  • Updating ASPX files trigger a recompilation and reload of the AppDomain so changes take effect immediately. No iisreset/recycle required.

//David