Недопустимый URI: формат URI не может быть определен
Я продолжаю получать эту ошибку.
Invalid URI: The format of the URI could not be determined.
код, который у меня есть:
Uri uri = new Uri(slct.Text);
if (DeleteFileOnServer(uri))
{
nn.BalloonTipText = slct.Text + " has been deleted.";
nn.ShowBalloonTip(30);
}
EDIT: содержимое в slct.Text ftp.jt-software.net/style.css
.
Что дает? Как этот недопустимый формат URI? Это простой текст.
Ответы
Ответ 1
Это может помочь использовать другой конструктор для Uri.
Если у вас есть имя сервера
string server = "http://www.myserver.com";
и иметь относительный путь Uri для добавления к нему, например
string relativePath = "sites/files/images/picture.png"
При создании Uri из этих двух я получаю исключение "формат не может быть определено", если я не использую конструктор с аргументом 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);
Ответ 2
Проверьте возможные причины здесь: http://msdn.microsoft.com/en-us/library/z6c2z492(v=VS.100).aspx
ИЗМЕНИТЬ:
Вам нужно поставить префикс протокола перед адресом, т.е. в вашем случае "ftp://"
Ответ 3
Лучше использовать 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);
}
}
Ответ 4
Похоже, это может быть реальный ури. Я столкнулся с этой проблемой при использовании кросс-браузера Silverlight; на моем blog Я упомянул обходное решение: передайте "контекстный" uri в качестве первого параметра.
Если uri является realtive, контекстный uri используется для создания полного uri. Если uri является абсолютным, то контекстный uri игнорируется.
РЕДАКТИРОВАТЬ: Вам нужна "схема" в uri, например, "ftp://" или "http://"
Ответ 5
Я работал над этим, используя UriBuilder.
UriBuilder builder = new UriBuilder(slct.Text);
if (DeleteFileOnServer(builder.Uri))
{
...
}