136 votes

URI invalide: Le format de l'URI n'a pas pu être déterminé

Je continue à recevoir cette erreur.

URI invalide : Le format de l'URI n'a pas pu être déterminé.

Le code que j'ai est :

Uri uri = new Uri(slct.Text);
if (DeleteFileOnServer(uri))
{
    nn.BalloonTipText = slct.Text + " a été supprimé.";
    nn.ShowBalloonTip(30);
}

Mise à jour : le contenu dans slct.Text est ftp.jt-software.net/style.css.

Qu'est-ce qui ne va pas ? Comment ce n'est pas un format d'URI valide ? C'est du texte brut.

150voto

CJBrew Points 1029

Il peut être utile d'utiliser un constructeur différent pour Uri.

Si vous avez le nom du serveur

string server = "http://www.myserver.com";

et que vous avez un chemin d'Uri relatif à y ajouter, par exemple

string relativePath = "sites/files/images/picture.png"

Lors de la création d'un Uri à partir de ces deux éléments, je reçois l'exception "le format n'a pas pu être déterminé" à moins d'utiliser le constructeur avec l'argument UriKind, c'est-à-dire

// cela fonctionne, car le protocole est inclus dans la chaîne
Uri serverUri = new Uri(server);

// nécessite l'arg UriKind, sinon UriFormatException est jetée
Uri relativeUri = new Uri(relativePath, UriKind.Relative); 

// Uri(Uri, Uri) est le constructeur préféré dans ce cas
Uri fullUri = new Uri(serverUri, relativeUri);

61voto

Simon Points 5327

Vérifiez les raisons possibles ici: http://msdn.microsoft.com/fr-fr/library/z6c2z492(v=VS.100).aspx

MODIFIER:

Vous devez mettre le préfixe du protocole devant l'adresse, c'est-à-dire dans votre cas "ftp://"

16voto

Ashish Gupta Points 5229

Mieux vaut utiliser Uri.IsWellFormedUriString(string uriString, UriKind uriKind). http://msdn.microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx

Exemple :-

 if(Uri.IsWellFormedUriString(slct.Text,UriKind.Absolute))
 {
        Uri uri = new Uri(slct.Text);
        if (DeleteFileOnServer(uri))
        {
          nn.BalloonTipText = slct.Text + " a été supprimé.";
          nn.ShowBalloonTip(30);
        }
 }

13voto

Stephen Cleary Points 91731

Il semble que ce soit une uri relative. J'ai rencontré ce problème lors de la création de Silverlight multi-navigateurs; sur mon blog j'ai mentionné une solution de contournement : passer une uri "contexte" en premier paramètre.

Si l'uri est relative, l'uri contexte est utilisée pour créer une uri complète. Si l'uri est absolue, alors l'uri contexte est ignorée.

MODIFICATION: Vous avez besoin d'un "schéma" dans l'uri, par exemple, "ftp://" ou "http://"

10voto

J'ai contourné le problème en utilisant UriBuilder à la place.

UriBuilder builder = new UriBuilder(slct.Text);

if (DeleteFileOnServer(builder.Uri))
{
   ...
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X