C# - Linkek helyességének ellenőrzése programból

forráskód letöltése
Gyakran lehet szükség arra, hogy egy adott URL-ről eldöntsük, létezik-e vagy sem, vagyis hogy a címmel reprezentált erőforrás elérhető-e vagy sem. Ezzel a módszerrel elkerülhető, hogy törött, használhatatlan linkek tömkelegével tűzdeljük tele weboldalunkat. Cikkünkben elkészítünk egy gyakorlati példát arra, hogy miként tehetjük ezt meg saját alkalmazásunkból.
A példához szükséges az URLDb adatbázis, melyet a mellékelt Run.cmd BATCH állomány lefuttatásával hozhatunk létre. Csak arra kell ügyelni, hogy az URLDb.sql parancsállomány a BATCH állománnyal azonos mappában legyen. Az URLDb.sql parancsállomány 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
A mellékelt állományok segítségével létrehozott URLDb adatbázis Table1 táblájában tároljuk az ellenőrzendő linkeket, a tábla Link oszlopában. Az alkalmazásunk lekérdezi azokat az URL-eket, melyek rekordjaiban a State oszlop értéke 1, és ezeket eltárolja egy DataTable (urldt) objektumban. Erre szolgál az URLQuery metódusunk.
private void URLQuery()
{
  adapter = new SqlDataAdapter("SELECT Link FROM Table1 WHERE State = 1",sqlConnection1);
  adapter.Fill(urldt);
}
A MŰVELET gomb megnyomásával elindítható az ellenőrzés, vagyis a hibás (törött) linkek kiszűrése. Erre a System.Net névtér osztályait használjuk fel, vagyis küldünk egy HTTP kérést az URL-ekre. Ehhez szükségünk van egy WebRequest objektumra a kérés elküldéséhez, és egy WebResponse objektumra a válasz fogadása érdekében.
WebRequest request = null;
WebResponse response = null;
Egy ciklussal végigmegyünk a DataTable rekordjain, és a linkeket átadjuk paraméterként a WebRequest osztály statikus Create metódusának.
for(int i=0;i<urldt.Rows.Count;i++)
{
  try
  {
    link = (string)urldt.Rows[i]["Link"];
    label3.Text = link;
    request = WebRequest.Create(link); 
    response = request.GetResponse();
  }
Amennyiben a kérés által megcélzott URL nem valós, akkor a kérés hibát eredményez, melyet elkapunk, és a hibás link karakterláncát a Form ListBox kontroljában megjelenítjük.
  catch
  {
    listBox1.Items.Add(link);
  }
A művelet végén lezárjuk a kapcsolatokat, és a következő linket vizsgáljuk.
  finally
  {
    response.Close();
    request.Abort();
    ...
A folyamat alakulását egy ProgressBar kontrollal jelezzük.