Abbiamo uno strumento che controlla se un dato URL è un URL live. Se un dato URL è attivo un'altra parte del nostro software può schermare il contenuto da esso.Errore "Il server remoto ha restituito un errore: (403) Proibito" quando si scorre lo schermo utilizzando HttpWebRequest.GetResponse()
Questo è il mio codice per verificare se un URL è vivo
public static bool IsLiveUrl(string url)
{
HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest;
webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5";
webRequest.CookieContainer = new CookieContainer();
WebResponse webResponse;
try
{
webResponse = webRequest.GetResponse();
}
catch (WebException e)
{
return false;
}
catch (Exception ex)
{
return false;
}
return true;
}
Questo codice funziona perfettamente, ma per un particolare sito ospitato su Apache io sono sempre un'eccezione web con seguente messaggio. "Il server remoto ha restituito un errore: (403) Forbidden" Su ulteriori controlli ho trovato i seguenti dati nell'oggetto WebException
Stato = "ProtocolError" StatusDescription = "cattivo comportamento"
Questa è la richiesta header "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.8.0.6) Gecko/20060728 Firefox/1.5 Host: scenicspares.co.uk Connessione: Keep-Alive"
Questa è l'intestazione della risposta "Keep-Alive: timeout = 4, max = 512 Connessione: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html Data: Giovedì, 13 Gennaio, 2011 10:29:36 GMT Server: Apache"
ho estratto queste intestazioni utilizzando un orologio in VS2008. Il frame work in use è 3.5.
Ciao @sinto, affronto lo stesso problema e aggiungo già il codice .Accetto, ma ho ancora ricevuto questo errore. Qualche idea? grazie – swdev
Capito, devo aggiungere queste tre linee, 'webRequest.Method =" GET "; webRequest.UserAgent = "Foo"; webRequest.Accept = "text/html"; 'Server diversi potrebbero richiedere impostazioni diverse – swdev
Grazie swdev. Il tuo suggerimento sembra risolvere il problema con alcune pagine di Wikipedia. – newman