2010-03-17 1 views
2

У меня есть код, как это:Почему IsWellFormedOriginalString не работает в файле Uris?

string uriString = @"C:\Temp\test.html"; 
Uri uri = new Uri(uriString); 
bool goodCond = uri.IsWellFormedOriginalString(); 

Но goodCond ложно! Что я делаю не так?


Edit: Благодаря Johannes и Catdirt. Я сконцентрирую свой вопрос: Как преобразовать допустимый путь к допустимому файлу Uri (используя uri.IsWellFormedOriginalString как указание на действительность Uri)? Взгляните на это:

 DirectoryInfo di = new DirectoryInfo(@"c:\temp"); 
     FileInfo [] fis = di.GetFiles("test.html"); 
     FileInfo fi = fis[0]; 
     string uriString = fi.FullName; 
     Uri uri = new Uri(uriString); 
     bool goodCond = uri.IsWellFormedOriginalString() 

Obviosly fi.fullName хорошо сформирован путь, но все-таки goodCond плохо!

+0

Какой язык/среда? –

ответ

8

Ваш URI не имеет правильной формы.

Хорошо сформированный пример будет file:///C:/Temp/test.html.

PS Home:> (new-object Uri 'file:///C:/Temp/test.html').IsWellFormedOriginalString() 
True 
PS Home:> (new-object Uri 'file:///C:\Temp\test.html').IsWellFormedOriginalString() 
False 
PS Home:> (new-object Uri 'C:\Temp\test.html').IsWellFormedOriginalString() 
False 
PS Home:> (new-object Uri 'C:/Temp/test.html').IsWellFormedOriginalString() 
False 
+1

взломан это: Debug.Assert (thePath.StartsWith (@ "C: \")); строка reverseed = thePath.Replace (@ "\", @ "/"); строка uriSeed = @ "file: ///" + reverseed; Uri resUri = новый Uri (uriSeed); – Avi