2012-03-16 6 views
0

Je vais avoir des problèmes pour créer un linkchecker, je voudrais avoir en ligne principalement pour l'apprentissage ..Linkchecker ne marche pas imprimerez urls cassé

Le problème est que j'ai eu comme il une application console qui a travaillé un peu Eh bien (j'ai des URL cassées pour montrer que je débogue la console), maintenant que j'essaie de l'obtenir sur le web, j'ai des problèmes ..

Comment puis-je obtenir cela dans le document? Je suis un peu perplexe au moment ..

public partial class Default2 : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 

} 


public bool UrlIsValid(string url) 
{ 
try 
{ 
    HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest; 
    request.Timeout = 5000; //set the timeout to 5 seconds to keep the user from waiting too long for the page to load 
    request.Method = "HEAD"; //Get only the header information -- no need to download any content 

    HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

    int statusCode = (int)response.StatusCode; 
    if (statusCode >= 100 && statusCode < 400) //Good requests 
    { 
     return true; 
    } 
    else if (statusCode >= 500 && statusCode <= 510) //Server Errors 
    { 
     string cl = (String.Format("The remote server has thrown an internal error. Url is not valid: {0}", url)); 
     // Debug.WriteLine(cl, Convert.ToString(url)); 

     return false; 
    } 
} 
catch (WebException ex) 
{ 
    if (ex.Status == WebExceptionStatus.ProtocolError) //400 errors 
    { 
     return false; 
    } 
    else 
    { 
     string cl = String.Format("Unhandled status [{0}] returned for url: {1}", ex.Status, url); 
     /// Debug.WriteLine(cl, Convert.ToString(ex)); 

    } 
} 
catch (Exception ex) 
{ 
    object cl = String.Format("Could not test url {0}.", url); 
    Debug.WriteLine(cl, Convert.ToString(ex)); 
} 
return false; 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
WebClient wc = new WebClient(); 

string checker = wc.DownloadString("http://administration.utbildningssidan.se/linkcheck.aspx"); 

while (checker.Contains("<a href=")) 
{ 
    int checkstart = checker.IndexOf("<a href=") + 8; 
    int checkstop = checker.IndexOf(">", checkstart); 
    string validator = checker.Substring(checkstart, checkstop - checkstart); 

    // perform the check 
    if (!UrlIsValid(validator)) { Debug.WriteLine(validator); } 

    checker = checker.Substring(checkstop + 1); 
} 
} 
} 

espère que vous comprenez ce que je veux accompli, ayant du mal à donner un sens à ce moment ..

+0

Comment appelez-vous * ce 'UrlIsValid'? –

+0

n'a pas remarqué que je ne l'avais pas inclus dans le poste, voici comment on l'appelle (il est situé au bas de la « Button1_Click »: si (UrlIsValid (validateur) == false) { Debug.WriteLine (validateur } checker = checker.Substring (checkstop + 1); – Jesper

Répondre

1

Je pense que vous voulez Response.Write() à la place de vos méthodes Debug.WriteLine() . OU, vous pouvez créer un objet TextArea dans votre balisage et utiliser myTextArea.Text += "Some text";