Path.GetDirectoryName and Path.GetPathRoot don't work with URIs when you target the .NET Framework 4.6.2

Symptoms
When you have a project that explicitly targets the .NET Framework 4.6.2 or that disables the AppContext switch Switch.System.IO.UseLegacyPathHandling, Path.GetDirectoryName() and Path.GetPathRoot() throw an invalid path exception when they are passed a URI (such as http://).
Cause
This issue occurs because the same correctness check for colons that's used for the rest of the Path APIs was incorrectly added to these two APIs, which normally tolerate URI syntax.
Resolution
To work around this issue, remove the URI prefix before you call these APIs. Or, set the AppContext switch Switch.System.IO.UseLegacyPathHandling=true.

The .NET Framework team is working to provide a fix for this issue in the future versions of the product. 

For more information, see the .NET Framework 4.6.2 known issues.

More information
For more information, see Application compatibility in the .NET Framework 4.6.2.
Properties

Article ID: 3181958 - Last Review: 08/02/2016 17:36:00 - Revision: 1.0

Microsoft .NET Framework 4.6.2

  • kbqfe kbsurveynew kbtshoot kbexpertiseadvanced KB3181958
Feedback