Este post foi editado pela última vez por QWERTYU em 2020-11-11 às 09:14
Cenário: Abra um projeto .NET usando o banco de dados mysql e instale-o no ambiente de desenvolvimento local.NET MySQL, tudo está funcionando normalmente, mas quando é liberado para IIS, o programa está anormal e a mensagem de erro é a seguinte:
Informações de exceção: System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver. <GetService>b__0---> informações de exceção: O provedor ADO.NET com o nome fixo "MySql.Data.MySqlClient" não está registrado no perfil do computador ou da aplicação ou não pode ser carregado. Para mais informações, veja Exceções Internas.
InnerException:System.ArgumentException: 找不到请求的 .Net Framework Data Provider。可能没有安装。
Encontre o problema: Descobri que o servidor não está instalado.NET MySQL, como o MySQL usa o banco de dados em nuvem do Alibaba Cloud, também existem múltiplos servidores, para evitar a instalação em cada servidor.NET conector MySQL,Para isso, certifiquei-me de definir as referências do MySQL para "cópia local" para poder copiá-las na pasta bin e adicionar o seguinte ao meu app.config:
Depois de adicionar a configuração acima, funciona bem no servidor e posso implantar o aplicativo sem instalar o conector MySQL no servidor, mas agora tenho um problema na minha máquina de desenvolvimento local (com o conector MySQL instalado) e recebo esse erro quando tento conexão EF: Informações de exceção: System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver. <GetService>b__0---> informações de exceção: O provedor ADO.NET com o nome fixo "MySql.Data.MySqlClient" não está registrado no perfil do computador ou da aplicação ou não pode ser carregado. Para mais informações, veja Exceções Internas. InnerException:System.ArgumentException: 找不到请求的 .Net Framework Data Provider。可能没有安装。 Experimente a ação: Se eu comentar o XML adicionado acima na configuração, o erro desaparece. Isso pode ser porque o mesmo driver está instalado no sistema e está localizado no machine.config. A solução final e o porquê:
Tente adicionar <remove invariant="MySql.Data.MySqlClient" /> na sua configuração web. Na sua máquina, você já tem o conector MySQL instalado, e você modifica seu machine.config adicionando um no DbProviderFactories. Então, se você colocar outro provedor de dados MySQL no seu web.config, é como se você tentasse registrar a mesma coisa duas vezes.
|