2015-10-23 1 views
0

J'ai un VS 2012 Web Project Up. J'ai ODP.NET installé car nous sommes un atelier Oracle. J'ai hérité d'un projet qui utilise Oracle.ManagedAccess.Data et EF.Oracle ODP.NET erreur

Lors de l'exécution du projet dans VS 2012, je reçois l'erreur suivante:

There is a duplicate 'oracle.manageddataaccess.client' section defined.. 

La solution est de désactiver la ligne suivante dans web.config

<!--<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />--> 

ce qui était bien. Le projet compilé, mais lors de l'exécution d'une commande simple, comme obtenir un mot de passe là où il doit lire la base de données a été une autre erreur trébuché:

System.Data.ConstraintException: Column 'InvariantName' is constrained to be unique. Value 'Oracle.ManagedDataAccess.Client' is already present. 

Maintenant, je suis conscient du fait que l'erreur est déclenché par ODP.NET et l'avoir dans le GAC ainsi le double rapport d'erreur.

Y a-t-il une autre ligne que je devrais commenter ou existe-t-il un moyen de désactiver ODP.NET brièvement? Je ne veux pas installer ce client comme je l'utilise pour d'autres projets.

grâce

Répondre

5

Je trouve ce qui suit sur la Oracle site en ce qui concerne la « Il y a une section en double « de oracle.manageddataaccess.client » défini. »:

If your application is a web application and the above entry was added to a web.config and the same config section handler for "oracle.manageddataaccess.client" also exists in machine.config but the "Version" attribute values are different, an error message of "There is a duplicate 'oracle.manageddataaccess.client' section defined." may be observed at runtime. If so, the config section handler entry in the machine.config for "oracle.manageddataaccess.client" has to be removed from the machine.config for the web application to not encounter this error. But given that there may be other applications on the machine that depended on this entry in the machine.config, this config section handler entry may need to be moved to all of the application's .NET config file on that machine that depend on it.

J'espère que cela aide.

0

Dans mon cas, j'ai plusieurs projets. Un modèle de données Entity Framework, un autre qui est un service WCF utilisant le modèle EF, un projet WPF utilisant le service WCF et, enfin, mon prisme ASP.NET MVC, utilisant directement le modèle Entity Framework Data. Nous utilisons Oracle et avons un paquet Nuget oracle.manageddata. J'ai utilisé la version 12.1.21 dans tous les autres, excepté mon projet ASP (qui avait la version 12.1.22). Après avoir rétrogradé à ce que les autres projets utilisent, mon Web ASP est à nouveau en cours d'exécution. Utiliser différentes versions de Nuget dans différents projets, dans la même solution, ne semble pas être une si bonne idée.