【问题标题】:How to stop .NET Core from mutilating file URIs如何阻止 .NET Core 破坏文件 URI
【发布时间】: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 才修复的已知问题。

标签: c# .net .net-core uri


【解决方案1】:

这是 .NET 5 之前的 .NET Core 中的一个已知问题。您需要更新到 .NET 5。

相关链接:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2019-10-10
    • 2010-12-07
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多