【问题标题】:Why does IsWellFormedOriginalString fail on file Uris?为什么 IsWellFormedOriginalString 在文件 Uris 上失败?
【发布时间】:2010-03-17 11:18:14
【问题描述】:

我有这样的代码:

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

但是 goodCond 是假的!我做错了什么?


编辑: 感谢约翰内斯和 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()

显然 fi.fullName 是一条格式良好的路径,但 goodCond 仍然很糟糕!

【问题讨论】:

  • 那是什么语言/环境?

标签: c# .net uri


【解决方案1】:

您的 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

【讨论】:

  • 破解了这个:Debug.Assert(thePath.StartsWith(@"C:\")); string reversed = thePath.Replace(@"\", @"/");字符串 uriSeed = @"file:///" + 反转; uri resUri = new Uri(uriSeed);
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2015-12-08
    • 2019-10-19
    • 2016-10-22
    • 2022-01-08
    • 2014-01-16
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多