2009-09-17 10 views
3

Récemment, j'ai commencé à expérimenter avec ASP.NET MVC et Entity Framework. Puisque mon hébergeur ne me fournit que MySQL, j'ai essayé de le configurer. localement tout fonctionne bien, mais après que je publierai je reçois l'erreur suivante:Problèmes lors de la publication du site Web

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

Depuis que je suis plutôt inexpérimenté avec la configuration de ce google et manque d'une bonne réponse que je pensais que je vais essayer ici. Ma meilleure estimation est quelque chose qui manque dans le fichier web.config, mais je ne peux pas vraiment savoir de quoi il s'agit.

Toute aide serait grandement appréciée!

Répondre

3

Je pense avoir trouvé une solution. a) Je dois ajouter à mon fournisseur 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> 

b) Je dois faire référence à la DLL MySQL dans mon projet (du connecteur), juste pour être sûr que je vais utiliser:

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

c) Ces fichiers doivent être publiés avec le site Web, donc dans leurs propriétés, je vais mettre 'Copy Local' à true.

d) Assurez-vous que la version dans le web.config correspond à la version réelle de la dll

Malheureusement, je ne pourrai pas essayer ce pendant au moins 8 heures (depuis que je suis au travail à le moment), mais cela vient juste d'arriver à l'esprit pendant que je réfléchissais à l'endroit où nous réfléchissons le mieux. EDIT: fonctionne :)

1

J'ai eu le même problème (mysql, site de publication à l'hôte, VS2008, MySql Connector 6.1.3.0). J'ai dû faire quelques choses pour que cela fonctionne avec mon site d'hébergement. J'ai trouvé ces solutions sur un autre site, désolé je n'ai pas les liens donc je ne peux pas leur en donner le crédit.

Tout d'abord, j'ai ajouté des références comme mentionné ci-dessus. Ainsi que le code dbFactories pour utiliser les DLL dans mon dossier BIN et non les serveurs GAC.

Deuxièmement, je devais créer msl individuel, ssdl, csdl (je l'ai fait en créant une application de formulaire Windows et de modifier le manifeste pour «copier dans le répertoire de sortie»). J'ai placé ces fichiers dans mon répertoire APP_DATA du site Web. J'ai alors changé ma chaîne de connexion pour quelque chose comme ci-dessous. La chaîne de connexion a également été créée avec 'quot' au lieu de apostrophe unique? Un bug je suppose.

add name = "classEntities" connectionString = "métadonnées = ~ \ App_Data \ Model.csdl | ~ \ App_Data \ Modèle.ssdl | ~ \ App_Data \ Model.msl; provider = MySql.Data.MySqlClient; chaîne de connexion du fournisseur = 'server = hostServer; id utilisateur = myUsername; mot de passe = myPassword; database = schéma' "providerName =" System.Data.EntityClient "

J'espère que cela aide quelqu'un, j'ai passé plus d'une semaine ou deux à le résoudre .

1

Les fichiers répertoriés ci-dessus sont les assemblages dépendants de MySql.Data.dll et doivent se trouver dans le dossier bin, mais uniquement dans le cas où le package mysql.data.msi n'est pas installé sur le serveur sur lequel votre application Web est hébergée. Sinon, inutile de mettre ces fichiers dans le dossier bin.

Installez mysql.data.msi sur le serveur et ne placez MySql.Data.dll que dans le dossier bin et l'application.

Habib Hameed [email protected]

0

Les fichiers: "mysql.web.dll", "mysql.data.entity.dll", "mysql.data.dll" nécessaire pour être dans le dossier "bin" et le dossier "root-www" dans l'hôte.

Le fichier: "mysql.data.cf.dll" ne fait rien et il fera une erreur s'il sera dans le dossier "bin".

Questions connexes