Rätta mig om jag har fel.
Jag vill kontrollera om en url finns, dvs att den inte för tillfället returnerar en 404 eller en 500. Dvs ett protokollfel. Använder denna kodsnutt som funkar bra.
' Adressen som skall kontrolleras bör vara en valid url först.
' Skapar en HttpWebRequest med en specificerad url.
Dim httpWebRequest As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
httpWebRequest.AllowAutoRedirect = False
Try
Dim httpWebResponse As HttpWebResponse = CType(httpWebRequest.GetResponse(), HttpWebResponse)
Return Convert.ToInt32(httpWebResponse.StatusCode).ToString
Catch ex As WebException
Return ex.Message.ToString
End Try
Den returnerar 200 på sidor som finns, och på sidor som inte skall finnas ex. http://www.kjjk.se/aaa.asp resp. http://www.kjjk.se/test.aspx
Dessa två ger då: 404 resp. 500 precis som de skall göra.
Men försöker jag med en sida som egentligen inte existerar som ex.
http://www.adlibris.com/aa.aspx , så får jag ju inte en 404, även fast det egentligen är en 404 eftersom den sidan inte finns, utan jag får en 302. Alltså en redirect. Detta sker givetvis då på samtliga sidor som är av karaktären redirect, t ex. http://www.adlibris.com/ ger också en 302.
Beror detta på att ASP.NET motorn fångar upp responsen innan den skickas till klienten och gör en modifikation av responskoden, och gör en redirect till en customerror page, och där med blir responskoden en 302.