2016-09-01 4 views
0

Je tente de construire un WCF hébergé dans iis mais j'ai un problème ennuyeux. Lorsque j'exécute mon application de console client et que je me connecte au serveur, j'obtiens l'erreur "Impossible de charger le fichier ou l'assemblage 'EntityFramework, Version = 6.0.0.0, Culture = Neutre, PublicKeyToken = b77a5c561934e089" ou l'une de ses dépendances. ".WCF: Impossible de charger le fichier ou l'assembly 'EntityFramework' ou l'une de ses dépendances

J'ai trois paquets de pépites installés dans mon service et client. Entityframework 6.0.0.0, MySql.data 6.9.9 et MySql.Data.Entity 6.9.9. MySql.Data.Entity nécessite MySql.Data supérieur à 6.8.7 et EntityFramework supérieur ou égal à 6.0.0.0, donc je devrais aller bien là-bas. Je suis sûr que j'ai référencé EF 6.0.0.0 partout dans mon fichier app.config de service mais j'ai toujours l'erreur.

Est-ce que quelqu'un sait si quelque chose d'autre pourrait causer cela? J'ai seulement le framework d'infrastructure 6.1.3 installé sur mon ordinateur, est-ce que cela pourrait être le problème?

Je suis un peu coincé dans mon projet, alors si quelqu'un pouvait prendre le temps et m'aider, ce serait vraiment bien!

projet client

App.config:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 
    <system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_IWCFProductService" /> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://localhost:50710/ProductService" binding="basicHttpBinding" bindingConfiguration="" contract="ProductInterfaces.IWCFProductService" name="ProductServiceEndpoint" kind="" endpointConfiguration="" /> 
     <endpoint address="http://erihy283-pc/ProductService/Service.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IWCFProductService" contract="ProductService.IWCFProductService" name="BasicHttpBinding_IWCFProductService" /> 
    </client> 
    </system.serviceModel> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v13.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers> 
    </entityFramework> 
<system.data> 
    <DbProviderFactories> 
     <remove invariant="MySql.Data.MySqlClient" /> 
     <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.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
    </system.data></configuration> 

projet de service

Packages.config

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="EntityFramework" version="6.0.0" targetFramework="net452" /> 
    <package id="MySql.Data" version="6.9.9" targetFramework="net452" /> 
    <package id="MySql.Data.Entity" version="6.9.9" targetFramework="net452" /> 
</packages> 

App.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 

    <connectionStrings> 
    <add name="adventureworksEntities" connectionString="metadata=res://*/Database.csdl|res://*/Database.ssdl|res://*/Database.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=root;password=root;database=adventureworks&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="mssqllocaldb" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 

    <system.serviceModel> 
    <services> 
     <service name="WCFProductService" behaviorConfiguration="mexBehaviour"> 

     <endpoint address="ProductService" 
       binding="basicHttpBinding" 
       bindingConfiguration="" 
       name="ProductServiceEndpoint" 
       contract="ProductService.IWCFProductService" 
       behaviorConfiguration="webHttp" /> 

     <endpoint contract="IMetadataExchange" 
       binding="mexHttpBinding" 
       address="ProductService" /> 

     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:50710" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    </system.serviceModel> 

    <system.data> 
    <DbProviderFactories> 
     <remove invariant="MySql.Data.MySqlClient" /> 
     <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.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
    </system.data> 

    <runtime> 

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" /> 
     </dependentAssembly> 

     <dependentAssembly> 
     <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 

    </runtime> 

</configuration> 

projet hôte

web.config

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 

    <system.diagnostics> 
    <trace autoflush="true" /> 
    <sources> 
     <source name="System.ServiceModel" 
      switchValue="Information, ActivityTracing" 
      propagateActivity="true"> 
     <listeners> 
      <add name="sdt" 
      type="System.Diagnostics.XmlWriterTraceListener" 
      initializeData= "SdrConfigExample.e2e" /> 
     </listeners> 
     </source> 
    </sources> 
    </system.diagnostics> 

    <system.serviceModel> 

    <services> 
     <service name="WCFProductService" > 

     <endpoint address="ProductService" 
       binding="basicHttpBinding" 
       bindingConfiguration="" 
       name="ProductServiceEndpoint" 
       contract="ProductService.IWCFProductService" 
       behaviorConfiguration="webHttp"/> 

     <endpoint address="http://localhost:50710/svc/mex" 
       binding="mexHttpBinding" 
       bindingConfiguration="" 
       contract="IMetadataExchange"/> 

     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:50710" /> 
      </baseAddresses> 
     </host> 

     </service> 
    </services> 


    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 

     <endpointBehaviors> 
     <behavior name="webHttp"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 

    </system.serviceModel> 

</configuration> 

de packages.config

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="EntityFramework" version="6.0.0" targetFramework="net452" /> 
    <package id="MySql.Data" version="6.9.9" targetFramework="net452" /> 
    <package id="MySql.Data.Entity" version="6.9.9" targetFramework="net452" /> 
</packages> 

J'ai pool d'applications ASP.NET v4.0 définie dans iis!

+0

Je suis sûr qu'il a quelque chose à voir avec cette balise pour EntityFramework dans votre App.Config ... https://msdn.microsoft.com/en-us/library/twy1dw1e(v=vs. 110) .aspx Exactement ce qu'il faut faire pour le réparer ... Je ne suis pas ceratin. –

Répondre

0

Le message d'erreur s'affiche généralement car les packages que vous demandez de charger ne sont pas présents. Une façon de vérifier cela est de regarder dans votre dossier "packages" pour la solution (si vous pouvez le trouver), où vous devriez voir un dossier pour chaque paquet qui est utilisé. Il est important que le numéro de version de ce dossier corresponde à celui que vous demandez. Il se peut que vous ayez EntityFramework.6.1.3, au lieu de EntityFramework.6.0.0 (que votre fichier packages.config demande).

Dans Visual Studio, vous pouvez utiliser la console du gestionnaire de packages (Outils -> Gestionnaire de packages NuGet -> Console du gestionnaire de packages) et utiliser la commande update-package EntityFramework -version 6.0.0. Cela devrait faire la mise à jour pour vous à la version spécifique que vous demandez, et télécharger les paquets en utilisant NuGet s'il ne peut pas les trouver localement.