Path.GetDirectoryName и Path.GetPathRoot не работают с URI при нацеливании на платформу .NET Framework 4.6.2

Применяется к
.NET Framework 4.6

Проблема

Если у вас есть проект, который явно нацелен на платформа .NET Framework 4.6.2 или отключает переключатель AppContext Switch.System.IO.UseLegacyPathHandling, Path.GetDirectoryName() и Path.GetPathRoot() выбрасывают исключение недопустимого пути, когда им передается URI (например, http://).

Причина

Эта проблема возникает из-за того, что та же проверка правильности для двоеточий, которая используется для остальных API пути, была неправильно добавлена в эти два API, которые обычно допускают синтаксис URI.

Решение

Чтобы обойти эту проблему, удалите префикс URI перед вызовом этих API. Или установите переключатель AppContext Switch.System.IO.UseLegacyPathHandling=true.

Команда платформы .NET Framework работает над исправлением этой проблемы в будущих версиях продукта. 

Дополнительные сведения см. в разделе "Известные проблемы" в платформе .NET Framework 4.6.2.

Дополнительные сведения

Дополнительные сведения см. в разделе Совместимость приложений в платформа .NET Framework 4.6.2.