SqlConnection-Instanziierungsausnahme unter .NET 4.6 und höher nach August-September 2018 .NET Framework Updates

Gilt für
.NET Framework 4.6.2 .NET Framework 4.6.1 .NET Framework 4.6 .NET Framework 4.7 .NET Framework 4.7.1 .NET Framework 4.7.2

Symptome

Nachdem Sie die Vorschauversion des Qualitätsrollups vom August oder .NET Framework Update vom 11. September 2018 installiert haben, kann die Instanziierung von SqlConnection eine Ausnahme auslösen.

Die Verwendung eines SqlConnection-Konstruktors kann zu einer Stapelüberwachung führen, die der folgenden ähnelt:

Hinweis

System.Runtime.Serialization.SerializationException
   at System.AppDomain.get_Evidence()
   at System.AppDomain.get_Evidence()
   unter System.Configuration.ClientConfigPaths.GetEvidenceInfo(AppDomain appDomain, String exePath, String& typeName)
   unter System.Configuration.ClientConfigPaths.GetTypeAndHashSuffix(AppDomain appDomain, String exePath)
   unter System.Configuration.ClientConfigPaths.. ctor(String exePath, Boolean includeUserConfig)
   unter System.Configuration.ClientConfigPaths.GetPaths(String exePath, Boolean includeUserConfig)
   at System.Configuration.ClientConfigurationHost.RequireCompleteInit(IInternalConfigRecord record)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   unter System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   bei System.Data.SqlClient.SqlConnection.. cctor()

Problemumgehung

Problemumgehung 1

Fügen Sie im abschnitt configSection der App.Config-Datei der Anwendung die folgenden Zeilen hinzu:

<section name="SqlColumnEncryptionEnclaveProviders"
type="System.Data.SqlClient.SqlColumnEncryptionEnclaveProviderConfigurationSection,
System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

Hinweis Wenn Ihre Anwendung keine app.config-Datei enthält, empfiehlt es sich, eine app.config-Datei zu erstellen und bereitzustellen, die diese Informationen in configSection enthält.

Wenn Problemumgehung 1 nicht funktioniert, probieren Sie Problemumgehung 2 aus.

Problemumgehung 2

Identifizieren Sie einen Ort in der App-Domäne, der ausgeführt wird, bevor objekte dem logischen Aufrufkontext hinzugefügt wurden. Fügen Sie Code hinzu, um zu erzwingen, dass ConfigurationManager versucht, einen Abschnitt zu laden, der in keiner Konfigurationsdatei vorhanden ist. Beispiel:

System.Configuration.ConfigurationManager.GetSection("SectionNameThatDoesNotExistInAnyConfigurationFile");

Weitere Informationen zu diesem Problem finden Sie im GitHub-Artikel Entschärfung: Deserialisierung von Objekten über App-Domänen hinweg.

Status

Microsoft recherchiert zu diesem Problem und wird in einer kommenden Version ein Update bereitstellen.