2009-03-03 32 views
1

Sitemde her zaman otomatik olarak küçük bir pencere uygulaması oluşturmak istiyorum ve çalışıyorsa, çalışıp çalışmadığını veya hata verdiğini kontrol edip etmediğini kontrol edin "Örnekler: 404, ağ hatası, db bağlantısı başarısız oldu "Ekranımda bir mesaj gösterecek.Sitem çalışmıyor mu, çalışmıyor mu yoksa bir hata mı var?

Herhangi bir .NET dili kullanarak programlı bir hata olduğunu nasıl anlarım?

+0

Elbette, üzerinde bulunduğunuz ağın merhametine herhangi bir program bırakılacaktır. – Terry

cevap

7

WebClient ile oldukça kolaydır. Böyle bir şey olacaktır:

WebClient client = new WebClient(); 
    try 
    { 
     string response = 
      client.DownloadString("http://www.example.com/tester.cgi"); 

     // We at least got the file back from the server 

     // You could optionally look at the contents of the file 
     // for additional error indicators  
     if (response.Contains("ERROR: Something")) 
     { 
      // Handle 
     } 
    } 
    catch (WebException ex) 
    { 
     // We couldn't get the file. 
     // ... handle, depending on the ex 
     // 
     // For example, by looking at ex.Status: 
     switch (ex.Status) 
     { 
      case WebExceptionStatus.NameResolutionFailure: 
       // ... 
      break; 
      // ... 
     } 
    } 

periyodik kontrol yapmak için bir Timer 'ın Tick olay falan o kadar kanca olabilir.

+0

Ayrıca, DownLoadStringAsync() yöntemini de kullanmalısınız, böylece makul bir zaman aşımı süresi de ayarlayabilirsiniz. –

2

HttpWebRequest'i kullanın ve WebException için bir deneyin yakalayıcısına sarın. Özel durum nesnesindeki hata kodu size kodu verecektir. 404, vb. 500 ise, mesajı yazdırabilirsiniz.

2

System.Net.WebClient nesnesini kullanın. HttpWebRequest'ten daha kolay kullanılır. Bir URL'nin içeriğini bir dizeye indirecek bir "DownloadString" yöntemine sahiptir. Bu yöntem, sunucu 500 döndürürse, bir WebException hatası da verebilir. Diğer hatalar için dizeyi ayrıştırabilir ve anahtar sözcükleri arayabilirsiniz.

5

Neden rahatsız oluyorsunuz?

1) Bu sizin güvenlik duvarı dışından sitenizi test, bu yüzden sorunların daha geniş bir yelpazede algılayabilir: Bu yaklaşık Sen RedAlert

gibi güzel bir şey, bir sağlayıcıdan ucuz için çok daha iyi bir çözüm elde edebilirsiniz.

2) Tarafsız bir üçüncü taraf olduğu için, bir SLA için ihtiyacınız olduğunda çalışma süresini kanıtlayabilirsiniz.

3) Küçük bir sigorta primi için, sorunları denemeye ve teşhis etmeye çalışabilirsiniz.

4) Sorun olduğunda sayfayı veya e-postayı size gönderebilir.

5) Yeni bir sunucuyu devreye almanız gerekmez.

Geez, Çocuklar için bir reklam gibi geliyorum, ama söz veriyorum onlar için çalışmadım ya da bir geri tepme alma. Sunucularımız için hizmetten yeni memnun kaldım.

BTW: Fiyatlandırmayı kontrol ettim ve site/ay başına yaklaşık 20 ABD doları. Bu yüzden muhtemelen bir yıl boyunca hizmetinizi kendiniz inşa etmek için alacağından daha kısa sürede ödeyebilirsiniz.

+0

Neden rahatsız oluyorsunuz? Aynı çözümü InternetSeer gibi bir sağlayıcıdan ÜCRETSİZ olarak alabilirsiniz. Heck, Google Web Yöneticisi Araçları'nda bile benzer (her ne kadar sofistike olmasa da) bir hizmet sunuyor. Aynı hizmet için başkalarının 0 ABD doları ödediğinde, ayda 20 dolarlık ücreti haklı çıkardığını göremiyorum. –

+1

"Bir küçük pencere uygulaması oluşturmak istiyorum ..." sorusunu, bir şeyi nasıl yapacağını öğrenmek istediğini söylemek istedim, hizmeti gerçekleştirebilecek bir ücret/ücretsiz hizmet bulamadım ... – Dscoduc

+0

@ Dscoduc, yes Haklısın, istediğim şey kendi kendime nasıl yapılacağını öğrenmek, ama bildiği herhangi bir şeyden yardım eden herkese teşekkür ediyorum. Buradaki cevaplardan yeni şeyler ve hizmetler öğrendim ve bu harika :) –

1

Bunu yaparsanız, veri tabanı, IO dosyası gibi özel alt sistemleri çalıştıran özel bir sayfa oluşturun ve sonuçları düz metin olarak değil html olarak sunar. Bu, iade edilen verileri daha kolay ayrıştırmanıza olanak tanır ve ayrıca size bir 404 veya 500 HTTP hatası vermeyecek DB veya IO sorunları gibi şeyleri yakalar.

0

Siteleriniz tükendiğinde e-posta/SMS almayı tercih ederseniz, Are My Sites Up web tabanlı çözümü deneyin.

3

Aynı işlevselliği gerçekleştirmek için önce üçüncü taraf çözümlerine baktım. Ücretsiz olan ve oldukça doğru olan belirli bir hizmet, MonitorUs. Bununla birlikte, kendi kendinize inşa etmek istiyorsanız, o zaman bir öneri alırdım. bir get isteği yerine Kafa isteği kullanarak düşünün:

BAŞ yöntemi sunucu yanıt olarak bir mesaj vücut döndürmemelidir dışında GET ile aynıdır. Bir HEAD isteği cevaben HTTP üstbilgilerinde bulunan metainformation bir GET isteğine yanıt olarak gönderilen bilgilere aynı olmalıdır. Bu yöntem işletme gövdesi kendisinin transfer olmadan isteği ima varlık yaklaşık metainformation elde etmek için kullanılabilir. Bu yöntem, hipermetin bağlantılarının geçerliliği, erişilebilirlik ve son modifikasyonu için sıklıkla test edilmesinde kullanılır. w3.org

İşte C# bir Kafa isteği gerçekleştirmek açıklar a link to Peter Bromberg's makale.