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.