Applies To.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

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.

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.