Цей допис востаннє відредаговано QWERTYU 2020-11-11 09:14
Сценарій: Відкрийте .NET-проєкт із базою даних mysql і встановіть його в локальному середовищі розробки.NET MySQL connector, все працює нормально, але коли він виходить на 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 connector,Для цього я встановив посилання MySQL на «локальне копіювання», щоб скопіювати їх у папку bin і додати наступне до свого app.config:
Після додавання вищезазначеної конфігурації все працює нормально на сервері, і я можу розгорнути додаток без встановлення MySQL connector на сервері, але тепер у мене проблема на локальному розробнику (з встановленим MySQL connector), і я отримую цю помилку, коли пробую підключення 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, це ніби ви намагалися зареєструвати одне й те саме двічі.
|