What is the difference between iisreset, recycle, refresh and restart?

In IIS7, there are numerous things you can do that seem to restart the website. I am unclear about exactly how they are all related.

  • run iisreset from the command line
  • refresh a website
  • recycle an app pool
  • restart a website

Can someone explain exactly what each one does please?


Solution 1:

iisreset will stop and start the World Wide Web Publishing Service. This, of course, applies to all of your application pools. I'm sure you noticed a process being created for each application pool. This process will handle requests for all websites associated with it. When you recycle an application pool, IIS will create a new process (keeping the old one) to serve requests. Then it tries to move all requests on the new process. After a timeout the old process will be killed automatically. You usually recycle your application pool to get rid of leaked memory (you might have a problem in your application if this needs to be a regular operation, even though it is recommended to have a scheduled recycle). As for restarting a website, it just stops and restarts serving requests for that particular website. It will continue to serve other websites on the same app pool with no interruptions.

If you have a session oriented application, all of the above will cause loss of session objects.

Refreshing a website has no effect on the service/process/website and is merely a UI command to refresh the treeview (maybe you added a directory you don't see in the management console).

Solution 2:

To answer your two other questions:

  • Refresh a websites just reloads data from the server
  • Restart a website doesn't do much really. By stopping the web site, it will no longer listen for requests on any of it's bindings. Starting it again makes it start listening again. Processes serving the web site remain unaffected.