Sintomas
Depois de instalar a Pré-visualização de Agosto de conjunto de qualidade ou a actualização do .NET Framework de 11 de Setembro, 2018,Instanciação do SqlConnection pode accionar uma excepção.
Utilização de um construtor SqlConnection pode conduzir a um rastreio de pilha semelhante à seguinte:
System.Runtime.Serialization.SerializationException em System.AppDomain.get_Evidence() em System.AppDomain.get_Evidence() em System.Configuration.ClientConfigPaths.GetEvidenceInfo (appDomain do AppDomain, exePath de cadeia, cadeia & typeName) em System.Configuration.ClientConfigPaths.GetTypeAndHashSuffix (appDomain do AppDomain, exePath cadeia) em System.Configuration.ClientConfigPaths... construtor (cadeia exePath, Boolean includeUserConfig) em System.Configuration.ClientConfigPaths.GetPaths (cadeia exePath, Boolean includeUserConfig) em System.Configuration.ClientConfigurationHost.RequireCompleteInit (registo de IInternalConfigRecord) em System.Configuration.BaseConfigurationRecord.GetSectionRecursive (String configKey, Boolean getLkg, checkPermission boleano, Boolean getRuntimeObject, Boolean requestIsHere, resultado & objecto objecto & resultRuntimeObject) em System.Configuration.BaseConfigurationRecord.GetSection (cadeia configKey) em System.Configuration.ConfigurationManager.GetSection (cadeia NomeSecção) em SqlConnection... cctor()
Solução
Solução 1
Adicione as seguintes linhas na configSection do ficheiro App da aplicação:
<section name="SqlColumnEncryptionEnclaveProviders" type="System.Data.SqlClient.SqlColumnEncryptionEnclaveProviderConfigurationSection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
Nota Se a aplicação não incluir um ficheiro App, recomendamos que crie e implemente um ficheiro de App que contém estas informações no configSection.
Se a solução 1 não funcionar, tente 2 solução alternativa.
Solução 2
Identifica um local no domínio de aplicação que é executada antes de quaisquer objectos foram adicionados para o contexto da chamada lógico. Adicione código para forçar a ConfigurationManager para tentar carregar uma secção que não existe em quaisquer ficheiros de configuração. Por exemplo:
System.Configuration.ConfigurationManager.GetSection("SectionNameThatDoesNotExistInAnyConfigurationFile");
Para mais informações sobre este problema, consulte o artigo GitHub atenuação: anulação da serialização de objectos entre domínios de aplicação.
Estado
A Microsoft está a investigar este problema e irá fornecer uma actualização numa versão futura.