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.
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);
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.
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);
}
}
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: //"
J'ai résolu ce problème en utilisant riBuilder .
UriBuilder builder = new UriBuilder(slct.Text);
if (DeleteFileOnServer(builder.Uri))
{
...
}