Устранение рисков. Проверки двоеточий в путях

Начиная с приложений, ориентированных на .NET Framework 4.6.2, выполнен ряд изменений для поддержки ранее не поддерживаемых путей (с точки зрения и длины, и формата). В частности, усовершенствованы проверки правильности синтаксиса разделителя диска (двоеточия).

Воздействие

Эти изменения блокируют некоторые пути URI, которые ранее поддерживались методами Path.GetDirectoryName и Path.GetPathRoot.

Исправление

Чтобы обойти проблему с ранее допустимым путем, который больше не поддерживается методами Path.GetDirectoryName и Path.GetPathRoot, можно сделать следующее:

  • Вручную удалить схему из URL-адреса. Например, удалить file:// из URL-адреса.

  • передать код URI в конструктор Uri и получить значение свойства Uri.LocalPath;

  • отказаться от новой нормализации путей, установив для параметра Switch.System.IO.UseLegacyPathHandlingAppContext значение true.

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

См. также