Проблемы с публикацией сайта - PullRequest
3 голосов
/ 17 сентября 2009

Недавно я начал экспериментировать с ASP.NET MVC и Entity Framework. Так как мой хостинг-провайдер предоставляет мне только MySQL, я пытался это настроить. Локально все работает нормально, но после публикации я получаю следующую ошибку:

[ProviderIncompatibleException: The store provider factory type 'MySql.Data.MySqlClient.MySqlClientFactory' does not implement the IServiceProvider interface. Use a store provider that implements this interface.]

Так как я довольно неопытен в настройке этого, и у Google нет хорошего ответа, я решил попробовать здесь Мое лучшее предположение - что-то отсутствует в файле web.config, но я не могу понять, что это.

Любая помощь будет принята с благодарностью!

Ответы [ 4 ]

3 голосов
/ 18 сентября 2009

Я думаю, что нашел решение. а) Я должен добавить провайдера в мой web.config:

  <system.data>
    <DbProviderFactories>
      <clear />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.0.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

б) Мне нужно ссылаться на MySQL DLL в моем проекте (из коннектора), просто чтобы быть уверенным, что я буду использовать:

  • mysql.web.dll
  • mysql.data.entity.dll
  • mysql.data.dll
  • mysql.data.cf.dll

в) Эти файлы должны публиковаться вместе с сайтом, поэтому в их свойствах я установлю «Скопировать локальный» в true.

d) Убедитесь, что версия в web.config соответствует реальной версии dll

К сожалению, я не смогу попробовать это, по крайней мере, 8 часов (так как я сейчас на работе), но это просто пришло в голову, когда я размышлял над тем местом, где мы стараемся , РЕДАКТИРОВАТЬ: работает:)

1 голос
/ 19 февраля 2010

Файлы, перечисленные выше, являются зависимыми сборками для MySql.Data.dll и должны находиться в папке bin, но только в том случае, если пакет mysql.data.msi не установлен на сервере, где размещено ваше веб-приложение. Иначе нет необходимости помещать эти файлы в папку bin.

Просто установите mysql.data.msi на сервер и поместите MySql.Data.dll только в папку bin, и приложение будет успешно запущено.

Хабиб Хамид Habibullah.hameed@yahoo.com

1 голос
/ 30 ноября 2009

У меня была такая же проблема (mysql, веб-сайт публикации на хост, VS2008, MySql Connector 6.1.3.0). Мне пришлось сделать несколько вещей, чтобы заставить это работать с моим хостингом. Я нашел эти решения на другом сайте, извините, у меня нет ссылок, поэтому я не могу отдать им должное.

Сначала я добавил ссылки, подобные упомянутым выше. А также код dbFactories для использования библиотек DLL в моей папке BIN, а не серверов GAC.

Во-вторых, мне нужно было создать отдельные msl, ssdl, csdl (я сделал это, создав приложение формы Windows и изменив манифест на «копировать в выходной каталог»). Я разместил эти файлы в своем каталоге APP_DATA на сайте.

Затем я изменил строку подключения на что-то вроде ниже. Кроме того, строка подключения изначально была создана с «quot» вместо одного апостроф? Полагаю, ошибка.

add name = "classEntities" connectionString = "metadata = ~ \ App_Data \ Model.csdl | ~ \ App_Data \ Model.ssdl | ~ \ App_Data \ Model.msl; provider = MySql.Data.MySqlClient; строка подключения поставщика = 'server = hostServer; идентификатор пользователя = myUsername; пароль = myPassword; база данных = схема' "providerName =" System.Data.EntityClient "

Надеюсь, это кому-нибудь поможет, я потратил целую неделю или две, чтобы разобраться с этим.

0 голосов
/ 14 ноября 2011

Файлы: "mysql.web.dll", "mysql.data.entity.dll", "mysql.data.dll" Необходимо находиться в папке «bin» и папке «root-www» на хосте.

Файл: "mysql.data.cf.dll" ничего не делает, и он выдаст ошибку, если окажется в папке "bin".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...