c# ping a website? (keep-alive service)

kacalapy picture kacalapy · Nov 19, 2010 · Viewed 11.7k times · Source

is there a way in c# to be able to ping a url every 15 minutes and get a response back from the server?

i want to try to see if .net can be used to build a simple tool to have asp.net websites invoke a re-build so that the first user doesn't incur the load penalty when the application is started.

or if anyone has an alternative method of accomplishing the same goal... thoughts? tips? ideas?

Answer

Brad Christie picture Brad Christie · Nov 19, 2010

Typically the person pushing a release should visit after they've uploaded the site just for test sake (make sure nothing bombed out). But if you're looking for a programmatic approach, WebClient may be helpful...

using (WebClient client = new WebClient())
{
  client.DownloadString("http://wwww.sitename.com/");
}

Then make it an exe and use the windows scheduler to run it. Could even put this in a WinService and report status to log files.

Update:

It looks like VS2012 now opens the page after a publish, making those pushing the site be the first-request.

Also, if you find you're having to visit it that frequently (every 15 minutes as mentioned in question) you may want to look in to reconfiguring the IIS/AppPool and change the cycle time to something longer. IIS natively conserves resources that are not used, and so if a site hasn't been queried in a while it will actually release the memory for another application to use.