Неверный URI: невозможно определить формат URI - PullRequest
93 голосов
/ 22 мая 2010

Я получаю эту ошибку.

Неверный URI: невозможно определить формат URI.

код, который у меня есть:

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

Обновление: содержимое в slct.Text - ftp.jt-software.net/style.css.

Что дает?Как это не правильный формат URI?Это простой текст.

Ответы [ 5 ]

101 голосов
/ 09 сентября 2010

Может помочь использование другого конструктора для Uri.

Если у вас есть имя сервера

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

и у вас есть относительный путь Uri для добавления к нему, например,

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

При создании Uri из этих двух Iполучите исключение «формат не может быть определен», если я не использую конструктор с аргументом UriKind, то есть

// 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);
53 голосов
/ 22 мая 2010

Проверьте возможные причины здесь: http://msdn.microsoft.com/en-us/library/z6c2z492(v=VS.100).aspx

РЕДАКТИРОВАТЬ:

Вам необходимо поставить префикс протокола перед адресом, т.е. в вашем случае "ftp: //"

12 голосов
/ 22 мая 2010

Похоже, это может быть реальным URI. Я столкнулся с этой проблемой, когда делал кросс-браузерный Silverlight; в моем блоге я упомянул обходной путь: передайте "context" uri в качестве первого параметра.

Если URI реалистичный, контекстный URI используется для создания полного URI. Если URI является абсолютным, тогда URI контекста игнорируется.

РЕДАКТИРОВАТЬ: Вам нужна "схема" в URI, например, "ftp: //" или "http://"

11 голосов
/ 06 июня 2011

Лучше использовать Uri.IsWellFormedUriString(string uriString, UriKind uriKind).http://msdn.microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx

Пример: -

 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);
        }
 }
6 голосов
/ 19 апреля 2017

Я обошел это, используя UriBuilder .

UriBuilder builder = new UriBuilder(slct.Text);

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