2010-11-19 3 views
6

Gibt es einen Weg in C#, eine URL alle 15 Minuten zu pingen und eine Antwort vom Server zu erhalten?C# ping eine Website? (Keep-Alive-Service)

Ich möchte versuchen, zu sehen, wenn .net verwendet werden kann, um ein einfaches Tool zu erstellen, damit asp.net-Websites eine Neuerstellung aufrufen, so dass der erste Benutzer beim Start der Anwendung keine Lasteinbußen erleidet.

oder wenn jemand eine alternative Methode zur Erreichung des gleichen Ziels hat ... Gedanken? Tipps? Ideen?

Antwort

9

In der Regel sollte die Person, die eine Freigabe drängt, besuchen, nachdem sie die Seite nur für Test sake hochgeladen hat (stellen Sie sicher, dass nichts ausgebombert wurde). Aber wenn Sie sich für einen programmatischen Ansatz, ist es vielleicht hilfreich sein WebClient ...

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

Dann wird eine exe machen und verwenden Sie den Windows-Scheduler, um sie auszuführen. Könnte dies sogar in einen WinService einfügen und den Status an Protokolldateien melden.

Update:

Es sieht aus wie jetzt VS2012 die Seite öffnet sich nach einer veröffentlichen, diejenigen drängen die Website als erster-Anfrage zu machen.

Auch wenn Sie finden, dass Sie es häufig besuchen müssen (alle 15 Minuten, wie in Frage erwähnt), möchten Sie vielleicht den IIS/AppPool neu konfigurieren und die Zykluszeit auf etwas länger ändern. IIS speichert nativ Ressourcen, die nicht verwendet werden, und wenn eine Site eine Weile nicht abgefragt wurde, wird der Speicher freigegeben, damit eine andere Anwendung verwendet werden kann.

+0

"In der Regel sollte die Person, die ein Release veröffentlicht, nach dem Hochladen der Website besuchen" Absolut, was passieren sollte! –

+1

@Greg B In Umgebungen mit Lastenausgleich ist dies nicht immer der Fall. Was wäre, wenn Sie 100 Server hätten? –

+0

@ RobStevenson-Leggett Messepunkt. Obwohl ich erwarten würde, dass der Load-Balancer oder die Anwendung eine Zustandsüberwachung in diesem Umfang hat. –

3

Sie könnten ein HttpWebRequest erstellen und etwas wie Quartz.NET verwenden, um es zu planen.

1

Sie können einfach eine WebRequest auslösen - ein Ping wird nicht die Website zum Wiederaufbau bekommen.

1

ich curl installieren würde und eine geplante Aufgabe verwenden zu tun, was Sie wollen.

Ich habe es mit Powershell kombiniert, App-Pools auch neu zu starten.