From 9e1de599490020760e1207e16065574f6195e604 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Tue, 21 Jun 2022 11:46:45 -0700 Subject: [PATCH 1/3] Work around for UriFormatException caused by \?\ prefix in the path --- .../src/System/Configuration/ClientConfigPaths.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs index d69806d970dbd9..50474b023d3a63 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs @@ -248,7 +248,6 @@ private static string GetTypeAndHashSuffix(string exePath, bool isSingleFile) if (assembly != null && !isSingleFile) { AssemblyName assemblyName = assembly.GetName(); - Uri codeBase = new Uri(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assembly.ManifestModule.Name)); try { @@ -265,9 +264,12 @@ private static string GetTypeAndHashSuffix(string exePath, bool isSingleFile) { try { - // Certain platforms may not have support for crypto - hash = IdentityHelper.GetNormalizedUriHash(codeBase); - typeName = UrlDesc; + if (Uri.TryCreate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assembly.ManifestModule.Name), UriKind.RelativeOrAbsolute, out Uri codeBase)) + { + // Certain platforms may not have support for crypto + hash = IdentityHelper.GetNormalizedUriHash(codeBase); + typeName = UrlDesc; + } } catch (PlatformNotSupportedException) { } } From 3e3ca619844864fb079dcbe94ef9d203f47f110c Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Tue, 21 Jun 2022 14:46:04 -0700 Subject: [PATCH 2/3] Apply feedback --- .../src/System/Configuration/ClientConfigPaths.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs index 50474b023d3a63..8278ab71a00bb1 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs @@ -264,7 +264,7 @@ private static string GetTypeAndHashSuffix(string exePath, bool isSingleFile) { try { - if (Uri.TryCreate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assembly.ManifestModule.Name), UriKind.RelativeOrAbsolute, out Uri codeBase)) + if (Uri.TryCreate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assembly.ManifestModule.Name), UriKind.Absolute, out Uri codeBase)) { // Certain platforms may not have support for crypto hash = IdentityHelper.GetNormalizedUriHash(codeBase); From e1433da7100fd3798c774987f53b538ac8797f8f Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Tue, 21 Jun 2022 22:46:45 -0700 Subject: [PATCH 3/3] Move try catch --- .../src/System/Configuration/ClientConfigPaths.cs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs index 8278ab71a00bb1..a2a818b7a5150b 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs @@ -260,16 +260,13 @@ private static string GetTypeAndHashSuffix(string exePath, bool isSingleFile) { typeName = StrongNameDesc; } - else + else if (Uri.TryCreate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assembly.ManifestModule.Name), UriKind.Absolute, out Uri codeBase)) { try { - if (Uri.TryCreate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assembly.ManifestModule.Name), UriKind.Absolute, out Uri codeBase)) - { - // Certain platforms may not have support for crypto - hash = IdentityHelper.GetNormalizedUriHash(codeBase); - typeName = UrlDesc; - } + // Certain platforms may not have support for crypto + hash = IdentityHelper.GetNormalizedUriHash(codeBase); + typeName = UrlDesc; } catch (PlatformNotSupportedException) { } }