Если вы используете FaceBook, убедитесь, что вы установили пользовательский агент, или сайт перенаправит вас на стандартную HTML-страницу, объясняющую вам, как это сделать (таким образом, код 200 статуса):
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0";
Также, когда из HttpWebRequest возвращается код состояния, отличный от 200, будет выдано исключение, а более конкретно - WebException . Поэтому вам нужно перехватить это WebException и внутри свойства Response , содержащего HttpWebResponse , вы найдете 404 StatusCode.
Также, вероятно, я бы использовал WebClient для упрощения кода:
Public Function ValidateUrlStatusCode(url As String) As ActionResult
Dim code = 0
Try
Using client = New WebClient()
client.Headers(HttpRequestHeader.UserAgent) = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0"
Dim response = client.DownloadString(url)
End Using
Catch ex As WebException
Dim httpResponse = TryCast(ex.Response, HttpWebResponse)
If httpResponse IsNot Nothing Then
code = CInt(httpResponse.StatusCode)
End If
End Try
Return Content(code.ToString(), "text/plain")
End Function
А на клиенте:
<script type="text/javascript">
$.ajax({
url: '@Url.Action("ValidateUrlStatusCode")',
type: 'POST',
data: { url: 'http://www.facebook.com/blah.html' },
success: function (result) {
alert(result);
}
});
</script>