web-dev-qa-db-fra.com

URI non valide: le format de l'URI n'a pas pu être déterminé

Je continue à avoir cette erreur.

URI non valide: 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 + " has been deleted.";
    nn.ShowBalloonTip(30);
}

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

Ce qui donne? Comment est-ce pas un format d'URI valide? C'est du texte brut.

99
anon271334

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 y ajouter un chemin Uri relatif, par ex.

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

Lorsque je crée un Uri à partir de ces deux objets, l’exception "le format ne peut pas être déterminé" est utilisée à moins que je n’utilise le constructeur avec l’argument UriKind, c.-à-d.

// this works, because the protocol is included in the string
Uri serverUri = new Uri(server);

// needs UriKind arg, or UriFormatException is thrown
Uri relativeUri = new Uri(relativePath, UriKind.Relative); 

// Uri(Uri, Uri) is the preferred constructor in this case
Uri fullUri = new Uri(serverUri, relativeUri);
106
CJBrew

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

MODIFIER:

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

54
Simon

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 + " has been deleted.";
          nn.ShowBalloonTip(30);
        }
 }
12
Ashish Gupta

On dirait que ça pourrait être un uri réaliste. J'ai rencontré ce problème lorsque je travaillais sur plusieurs navigateurs Silverlight; sur mon blog j'ai mentionné une solution de contournement: transmettez un "contexte" uri en tant que premier paramètre.

Si l'URI est réel, le contexte URI est utilisé pour créer un URI complet. Si l'URI est absolu, le contexte URI est ignoré.

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

12
Stephen Cleary

J'ai résolu ce problème en utilisant riBuilder .

UriBuilder builder = new UriBuilder(slct.Text);

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