2009-09-17 3 views
3

Недавно я начал экспериментировать с 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, но не может понять, что это такое.

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

ответ

3

Я думаю, что нашел решение. а) я должен добавить провайдера к моему 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

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

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

К сожалению, я не буду иметь возможность попробовать это, по крайней мере, 8 часов (так как я на работе в момент), но это только возникло в виду, когда я размышлял над тем местом, в котором мы делаем все возможное. EDIT: works :)

1

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

Во-первых, я добавил ссылки, как указано выше. Также как и код dbFactories для использования DLL в моей папке BIN, а не в серверах GAC.

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

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

add name = "classEntities" connectionString = "metadata = ~ \ App_Data \ Model.csdl | ~ \ App_Data \ Model.ssdl | ~ \ App_Data \ Model.msl; поставщик = MySql.Data.MySqlClient; строка подключения поставщика = 'server = hostServer; user id = myUsername; password = myPassword; database = schema' "providerName =" System.Data.EntityClient "

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

1

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

Просто установите mysql.data.msi на сервер и поместите файл MySql.Data.dll в папку bin и приложение успешно.

Хабиб Хамид [email protected]

0

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

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

Смежные вопросы