it-swarm.com.de

Ungültiger URI: Das Format des URI konnte nicht ermittelt werden

Ich bekomme immer wieder diesen Fehler.

Ungültiger URI: Das Format des URI konnte nicht ermittelt werden.

der Code, den ich habe, ist:

Uri uri = new Uri(slct.Text);
if (DeleteFileOnServer(uri))
{
    nn.BalloonTipText = slct.Text + " has been deleted.";
    nn.ShowBalloonTip(30);
}

pdate: der Inhalt in slct.Text ist ftp.jt-software.net/style.css.

Was gibt? Wie ist das nicht ein gültiges URI-Format? Es ist einfacher Text.

99
anon271334

Es kann hilfreich sein, einen anderen Konstruktor für Uri zu verwenden.

Wenn Sie den Servernamen haben

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

und einen relativen Uri-Pfad zum Anhängen haben, z.

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

Beim Erstellen eines Uri aus diesen beiden erhalte ich die Ausnahme "Format konnte nicht bestimmt werden", es sei denn, ich verwende den Konstruktor mit dem UriKind-Argument, d. H.

// 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

Überprüfen Sie mögliche Gründe hier: http://msdn.Microsoft.com/en-us/library/z6c2z492 (v = VS.100) .aspx

BEARBEITEN:

Sie müssen das Protokollpräfix vor die Adresse setzen, d. H. In Ihrem Fall "ftp: //".

54
Simon

Verwenden Sie besser Uri.IsWellFormedUriString(string uriString, UriKind uriKind). http://msdn.Microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx

Beispiel: -

 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

Klingt so, als wäre es ein realistischer Uri. Ich bin auf dieses Problem gestoßen, als ich browserübergreifendes Silverlight ausgeführt habe. In meinem Blog habe ich eine Problemumgehung erwähnt: Übergeben Sie als ersten Parameter eine "Kontext" -URI.

Wenn das Uri echt ist, wird das Kontext-Uri verwendet, um ein vollständiges Uri zu erstellen. Wenn der uri absolut ist, wird der Kontext uri ignoriert.

EDIT: Sie benötigen ein "Schema" in der URI, z. B. "ftp: //" oder "http: //".

12
Stephen Cleary

Ich habe das umgangen, indem ich stattdessen riBuilder verwendet habe.

UriBuilder builder = new UriBuilder(slct.Text);

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