Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to determine whether a web application is currently running

I have a ASP.NET web application running under IIS 6, and another process that is responsible to monitor and report status.

I'd like to sample the web application by the monitoring process in order to check its status by accessing a dedicated handler on the web application, BUT i don't want to "wake up" the web application in case it is not running.

Is there an option to determine whether a specific web application is currently running? if there is such an option, i would be able to first check if the application is running, and only then to access the handler to check its status.

Thanks.

like image 818
Satumba Avatar asked Nov 19 '10 11:11

Satumba


2 Answers

I had to do something similar earlier this year for IIS7, not sure if this would work for IIS6 but here's what I did.

        var iis = new DirectoryEntry("IIS://" + Environment.MachineName + "/w3svc");

        foreach (DirectoryEntry site in iis.Children)
        {
            if (site.SchemaClassName.ToLower() == "iiswebserver")
            {
                Console.WriteLine("Name: " + site.Name);
                Console.WriteLine("State: " + site.Properties["ServerState"].Value);
            }
        }

ServerState returns 2 for started and 4 for stopped.

like image 160
Phill Avatar answered Nov 10 '22 08:11

Phill


You can use the HTTP HEAD request to check if the site is up or not. Here is an example to do the same.

http://www.eggheadcafe.com/tutorials/aspnet/2c13cafc-be1c-4dd8-9129-f82f59991517/the-lowly-http-head-reque.aspx

like image 40
Nilesh Gule Avatar answered Nov 10 '22 08:11

Nilesh Gule