【发布时间】:2021-06-14 09:41:47
【问题描述】:
Uri 构造函数在处理file: URI 时似乎做了很多额外的工作,有时不幸的是对一个人不利。例如,file:///a%A4b 通过 AbsoluteUri 被解释为file:///a%A4b/a%A4b(以及由于某种原因在ToString() 中的file://%2Fa%A4b/a%A4b),显然每个不以驱动器号开头的文件URI 也是如此并且包含非 ASCII(甚至百分比编码)字符。
是否可以禁用 file: URI 的这种行为?似乎必须在全局范围内完成,因为我尝试在构造函数中使用不同的参数,但效果不佳。我可以禁用对 file: URI 的任何类型的特殊处理,因为即使(据我所知有效)像 file:a 这样的 URI 也会因此引发异常。
这个问题似乎只在 .NET Core 3.1 之前出现。在 .NET Framework 或 .NET 5 中,new Uri("file:///a%A4b") 按预期工作。有没有办法在不升级或切换到 .NET Framework 的情况下解决此问题?
【问题讨论】:
-
嗯,出于某种原因,这似乎是特定于我的环境的。我在 .NET Core 2.2 上运行它,所以它可能是一个错误。
-
@mjwills 似乎会影响 .NET Core 的所有版本,所以这个问题现在是 .NET Core 特有的。感谢您的帮助。
-
升级到 .NET 5 对@IS4 有帮助吗?
-
@mjwills 我还没有尝试过,但我相信它会。目前我仍然更喜欢不同的解决方案。
-
唉,不可能有不同的解决方案,因为这是一个直到 v5 才修复的已知问题。