How to restart your web application

Generally we all use cache to improve our website's performance. Caching is really useful when we are frequently displaying data which rarely requires changes. But, sometime client request an immediate change in cache entries and we have no option to manually run IISReset or change the contents of web.config file to clear all the cache.

In below code, I am sharing different approaches which can help you:-

namespace Utilities.General

{

    public static class Utility

    {

        public static bool RestartAppPool()

        {

            //First try killing your worker process

            try

            {

                //Get the current process

                Process process = Process.GetCurrentProcess();

                // Kill the current process

                process.Kill();

                // if your application have no rights issue then it will restart your app pool

                return true;

            }

            catch (Exception ex)

            {

                //if exception occoured then log exception

                Logger.Log("Restart Request Failed. Exception details :-" + ex);

            }

 

            //Try unloading appdomain

            try

            {

                //note that UnloadAppDomain requires full trust

                HttpRuntime.UnloadAppDomain();

                return true;

            }

            catch (Exception ex)

            {

                //if exception occoured then log exception

                Logger.Log("Restart Request Failed. Exception details :-" + ex);

            }

 

            //Finally automating the dirtiest way to restart your application pool

 

            //get the path of web.config

            string webConfigPath= HttpContext.Current.Request.PhysicalApplicationPath + "\\web.config";

            try

            {

                //Change the last modified time and it will restart pool

                File.SetLastWriteTimeUtc(webConfigPath, DateTime.UtcNow);

                return true;

            }

            catch (Exception ex)

            {

                //if exception occoured then log exception

                Logger.Log("Restart Request Failed. Exception details :-" + ex);

            }

 

            //Still no hope, you have to do something else.

            return false;

        }

    }

}


To implement above case you can create a dummy page i.e. RestartApplication.aspx or add a querystring parameter to your existing page like Home.aspx?RestartPool=true. Feel free to share your thoughts with me. Happy Codding !!!