Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 564
kacalapy Avatar asked Nov 19 '10 14:11

kacalapy


2 Answers

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.

like image 64
Brad Christie Avatar answered Sep 28 '22 08:09

Brad Christie


You might not need to write your own:

http://learn.iis.net/page.aspx/688/using-the-iis-application-warm-up-module/

like image 38
Hector Correa Avatar answered Sep 28 '22 09:09

Hector Correa