Этот пост был последний раз отредактирован QWERTYU 11.11.2020, 09:14
Сценарий: Откройте .NET-проект с базой данных mySQL и установите его в локальной среде разработки.NET MySQL коннектор, всё работает нормально, но при выпуске в iis программа ненормальная, и сообщение об ошибке следующее:
Информация об исключениях: System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver. <GetService>b__0---> информация об исключениях: ADO.NET-провайдер с фиксированным именем «MySql.Data.MySqlClient» не зарегистрирован в компьютере или профиле приложения или не может быть загружен. Для получения дополнительной информации см. раздел «Внутренние исключения».
InnerException:System.ArgumentException: 找不到请求的 .Net Framework Data Provider。可能没有安装。
Найдите проблему: Обнаружил, что сервер не установлен.NET MySQL connector, поскольку mysql использует облачную базу данных Alibaba Cloud, также существует несколько серверов, чтобы избежать установки на каждом сервере.NET разъём MySQL,Для этого я обязательно установил ссылки MySQL на «локальное копирование», чтобы скопировать их в папку bin и добавить следующее в мою app.config:
После добавления вышеуказанной конфигурации всё работает нормально на сервере, и я могу развернуть приложение без установки MySQL коннектора на сервер, но теперь у меня проблема на локальном разработчике (с установленным MySQL коннектором), и я получаю эту ошибку при подключении EF: Информация об исключениях: System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver. <GetService>b__0---> информация об исключениях: ADO.NET-провайдер с фиксированным именем «MySql.Data.MySqlClient» не зарегистрирован в компьютере или профиле приложения или не может быть загружен. Для получения дополнительной информации см. раздел «Внутренние исключения». InnerException:System.ArgumentException: 找不到请求的 .Net Framework Data Provider。可能没有安装。 Попробуйте действие: Если я комментирую добавленный выше XML в конфигурацию, ошибка исчезает. Возможно, это связано с тем, что тот же драйвер установлен в системе и находится в machine.config. Окончательное решение и почему:
Попробуйте добавить <remove invariant="MySql.Data.MySqlClient" /> в вашем веб-конфигурации. На вашем компьютере у вас уже установлен разъём MySql, и вы модифицируете machine.config, добавив его в DbProviderFactories. Так что если вы вводите другого провайдера данных MySQL в web.config, это как будто вы пытались зарегистрировать одно и то же дважды.
|