web-dev-qa-db-fra.com

La connexion nommée spécifiée est introuvable dans la configuration, non destinée à être utilisée avec le fournisseur EntityClient ou non valide.

J'ai deux projets dans une solution.

  1. PizzaSoftware.Data
  2. PizzaSoftware.UI

Dans le projet de données, j'ai mon modèle Entity Framework qui se connecte à ma base de données.

Mon projet d'interface utilisateur a une référence de projet aux données et voici à quoi il ressemble:

enter image description here

J'ai créé un contrôle utilisateur dans le dossier UserControls.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PizzaSoftware.Data;

namespace PizzaSoftware.UI.UserControls
{
    public partial class AutoCompleteTextBox : UserControl
    {
        AutoCompleteStringCollection completeCollection = new AutoCompleteStringCollection();

        public AutoCompleteTextBox()
        {
            InitializeComponent();
        }

        private void AutoCompleteTextBox_Load(object sender, EventArgs e)
        {
            CustomerRepository repo = new CustomerRepository();
            var customers = repo.FindAllCustomers().ToList();

            foreach (var customer in customers)
            {
                completeCollection.Add(customer.Name);
            }

            txtSearchBox.AutoCompleteMode = AutoCompleteMode.Suggest;
            txtSearchBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
            txtSearchBox.AutoCompleteCustomSource = completeCollection;
        }
    }
}

Lorsque j'essaie de faire glisser ce contrôle utilisateur dans le volet de conception, le message d'erreur s'affiche dans le titre de la question.

Voici à quoi ressemble ma chaîne de connexion:

<connectionStrings>
   <add 
      name="SaharaPizzaEntities"
      connectionString="
         metadata=res://*/PizzaSoftwareEntityModel.csdl|res://*/PizzaSoftwareEntityModel.ssdl|res://*/PizzaSoftwareEntityModel.msl;
         provider=System.Data.SqlClient;
         provider connection string=&quot;
            Data Source=.\SQLEXPRESS;
            Initial Catalog=SaharaPizza;
            Integrated Security=True;
            MultipleActiveResultSets=True
         &quot;"
      providerName="System.Data.EntityClient"
/>

Qu'est-ce qui pourrait causer cette erreur?

16
delete

Dans votre app.config, votre chaîne de connexion ressemble à ..

   connection string=&quot;
      Data Source=.\SQLEXPRESS;
      Initial Catalog=SaharaPizza;
      Integrated Security=True;
      MultipleActiveResultSets=True
   &quot;

Remarquez le & quot. Essayez de changer cela en un seul devis '

10
Ryan Alford

Copiez <connectionStrings> depuis App.Config de PizzaSoftware.Data vers web.config à partir de PizzaSoftware.UI et ajoutez-le à web.config

<assemblies>
<add Assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</assemblies>
19

Je viens de constater que si le répertoire virtuel d'une application est créé dans IIS à partir de VS2010 à deux niveaux à partir de la racine du site Web, cette erreur se produirait. Vous n'êtes pas sûr de savoir pourquoi cela se produit, il faudrait enquêter davantage. Par exemple, si votre application se trouve dans le chemin suivant: /admin/advertiser, l'erreur apparaît si vous n'avez pas le répertoire virtuel /admin dans votre IIS site.

Tout ce que j'ai fait est créé un répertoire admin vide dans mon .../intepub/wwwroot et l'erreur a disparu.

Vous constaterez que vous ne pourrez pas commencer le débogage avant d'avoir effectué l'étape ci-dessus.

Nous avions eu ce problème dans notre équipe dans le passé, il nous a fallu du temps pour nous en souvenir, mais c’est exactement comme nous l’avons réglé auparavant.

2
Jovica Zaric

La chaîne de connexion ressemble à une chaîne valide pour le fournisseur EntityClient. Par conséquent, je suppose que le message d'exception indique que "la connexion nommée spécifiée est introuvable dans la configuration".

Le nom de la chaîne de connexion dans la configuration est "SaharaPizzaEntities". Avez-vous spécifié la "connexion nommée" de manière explicite lorsque vous créez votre contexte d'objet dérivé?

La classe de contexte d'objet généré a plusieurs constructeurs, l'un d'eux est sans paramètre:

public EntityModelContainer() : base("name=EntityModelContainer",
    "EntityModelContainer")

name=EntityModelContainer est le nom de la chaîne de connexion qui doit correspondre à la chaîne de connexion de votre fichier de configuration ("SaharaPizzaEntities"). Vous pouvez changer le nom dans le fichier de configuration ou utiliser le second constructeur qui permet de définir explicitement le nom de la chaîne de connexion:

public EntityModelContainer(string connectionString) : base(connectionString,
    "EntityModelContainer")
0
Slauma

J'ai eu le même problème et j'ai essayé toutes les méthodes mentionnées. enfin je l'ai résolu comme mentionné. Dans mon cas, j'ai une couche de données et une couche de présentation séparées. dans mon app.config (couche de données), j'ai une connexion comme celle-ci. 

<add name="LibraryMgtSysEntities" connectionString="metadata=res://*/DataLibraryMgtSys.csdl|res://*/DataLibraryMgtSys.ssdl|res://*/DataLibraryMgtSys.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=abc;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=123;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

dans mon web.config j'ai configuré manuellement la connexion comme suit:

<add name="DefaultConnection" providerName="System.Data.SqlClient"
 connectionString="Data Source=abc;
 Initial Catalog=LibraryMgtSys;
 Integrated Security=SSPI;
 user id=sa;password=123;" />

cela me donne la même exception que celle mentionnée ci-dessus. donc je l'ai résolu en ajoutant la valeur app.config dans le fichier de configuration Web.

mon fichier web.config final comme suit:

<connectionStrings>
    <clear />
    <add name="LibraryMgtSysEntities" connectionString="metadata=res://*/DataLibraryMgtSys.csdl|res://*/DataLibraryMgtSys.ssdl|res://*/DataLibraryMgtSys.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=TILANITHOTAMUNE\SQLEXPRESS;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=testing;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
    <add name="DefaultConnection" providerName="System.Data.SqlClient"
         connectionString="Data Source=abc;
         Initial Catalog=LibraryMgtSys;
         Integrated Security=SSPI;
         user id=sa;password=123;" />
  </connectionStrings>
0
DevT

Voici un exemple de chaîne de connexion qui ne fonctionnait pas

mon erreur en donnant la chaîne de connexion était

  <connectionStrings>
<add name="IEMRWEBSEntities" connectionString="metadata=res://*/IemrWebs.csdl|res://*/IemrWebs.ssdl|res://*/IemrWebs.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=192.168.0.25;initial catalog=IEMRWEBSSitecore_Custom;persist security info=True;user id=IEMRWEBS;password=aDn16s!$AaS;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Le problème est avec le chemin

voir le * utilisé dans la chaîne de connexion 

"metadata=res://*/IemrWebs.csdl|res://*/IemrWebs.ssdl|res://*

remplacez * par l'espace de noms dans lequel votre fichier edmx est placé

placez l'espace de nom au lieu de * dans votre fichier appconfig

mon espace de nom de fichier edmx est IemrWebs.Data.Model . J'ai donc remplacé * par IemrWebs.Data.Model, voir ci-dessous et il fonctionne . La chaîne de connexion correcte est indiquée ci-dessous.

<connectionStrings>
<add name="IEMRWEBSEntities" connectionString="metadata=res://IemrWebs.Data.Model/IemrWebs.csdl|res://IemrWebs.Data.Model/IemrWebs.ssdl|res://IemrWebs.Data.Model/IemrWebs.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=192.168.0.25;initial catalog=IEMRWEBSSitecore_Custom;persist security info=True;user id=IEMRWEBS;password=aDn16s!$AaS;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

0
user2965081

Le problème peut facilement être résolu. Copiez simplement votre chaîne de connexion du fichier Aap.Config au fichier Web.config, cela exécutera sûrement vos applications. Cela fonctionne correctement pour moi.
L'erreur se produit lorsque vous avez une classe de données/entité dans un autre projet et des pages Web dans un projet séparé.

0
user1576593

J'avais le même problème, donc j'utilisais le fil 2 comme vous et je pensais que c'était parce que dans la bibliothèque ne s'exécutait pas, je le mettais dans le projet principal et le commençais ensuite pour que le travail soit achevé avec succès. ] Cela pourrait être une solution, pas ce dont vous avez besoin, mais vous pourriez résoudre avec cette

veuillez excuser mon anglais.

J'espère que cela pourra vous aider

0
Leudi R.

Je faisais également face au même problème dans mon projet. J'avais 3 projets différents 

  1. Données dans lesquelles j'ai ajouté le cadre de l'entité. ce projet avait le fichier App.config avec la chaîne de connexion
  2. Animateur: avec mon animateur
  3. Vue: avec interface utilisateur.

Je viens de copier la chaîne de connexion dans la configuration d'application de View et cela fonctionne bien.

et la raison du problème était "" "La chaîne de connexion n'était pas disponible localement, où elle était requise" "".

0
suresh

Je pense que votre fichier de configuration ne se trouve pas dans le projet Web, il se trouve dans une autre DLL .... pas si sûr ... mais votre chaîne de connexion doit être dans le fichier web.config du projet en cours d'exécution ...

0
Roshdy Abuzeid