缓解:路径冒号检查

从面向 .NET Framework 4.6.2 的应用开始,对以前不支持的路径(长度和格式)进行了许多更改。 特别是,能够更加准确地检查驱动器分隔符语法(冒号)的用法是否正确。

影响

这些更改阻止了以前支持的一些 URI 路径 Path.GetDirectoryNamePath.GetPathRoot 方法。

缓解措施

若要解决之前可接受但不再受Path.GetDirectoryNamePath.GetPathRoot方法支持的路径问题,可以执行以下操作:

  • 从 URL 中手动删除协议。 例如,从 URL 中删除 file://

  • 将 URI 传递给 Uri 构造函数,并检索属性的值 Uri.LocalPath

  • 通过将 Switch.System.IO.UseLegacyPathHandlingAppContext 开关设置为 true 来选择禁用新的路径规范化。

    <runtime>  
        <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
    </runtime>  
    

另请参阅