Je travaille sur un formulaire dans lequel les utilisateurs sont invités à fournir l'URL d'un fichier. Je dois vérifier si cette URL pointe vraiment vers quelque chose. J'utilise un CustomValidator avec une validation côté serveur. Voici le code:Vérification de la validité de l'URL dans VB.net
Protected Sub documentUrlValide_ServerValidate
(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs)
Handles documentUrlValide.ServerValidate
Try
Dim uri As New Uri(args.Value)
Dim request As HttpWebRequest = HttpWebRequest.Create(uri)
Dim response As HttpWebResponse = request.GetResponse()
Dim stream As Stream = response.GetResponseStream()
Dim reader As String = New StreamReader(stream).ReadToEnd()
args.IsValid = True
Catch ex As Exception
args.IsValid = False
End Try
End Sub
Je l'ai testé avec plusieurs URL valides, aucun passé le test, le request.GetResponse() renvoie toujours WebException: « ne peut pas résoudre le nom distant ».
Quel est le problème avec ce code?
Mise à jour:
Je ne pouvais pas faire de ce côté serveur de travail, en dépit de mon code étant apparemment bien, donc je l'ai couru côté client avec une requête HTTP synchrone javascript. Voici le code (notez que ma demande n'est demandé d'exécuter sur IE, ce code ne fonctionnera pas sur d'autres navigateurs Dut à Http demander un service est différent)
function testURLValide(sender, args)
{
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
xmlhttp.open("HEAD", args.Value, false);
xmlhttp.send(null);
if (! (xmlhttp.status == 400 || xmlhttp.status == 404))
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}
J'ai mis ce code exact dans mon application et cela ne fonctionne pas. Je me demande si cela pourrait être lié à une règle de pare-feu dans mon bureau. Je vais jeter un coup d'oeil à ça. –