c# - usuario - La conexión con nombre especificado no se encuentra en la configuración, no está destinada a ser utilizada con el proveedor de EntityClient o no es válida
configuracion settings (10)
Tengo dos proyectos en una solución.
- PizzaSoftware.Data
- PizzaSoftware.UI
En el proyecto de datos, tengo mi modelo de Entity Framework que se conecta a mi base de datos.
Mi proyecto de IU tiene una referencia de proyecto a Datos y así es cómo se ve:
Creé un control de usuario en la carpeta 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;
}
}
}
Cuando intento arrastrar este control de usuario al panel de diseño, recibo el error en el título de la pregunta.
Así es como se ve mi cadena de conexión:
<connectionStrings>
<add
name="SaharaPizzaEntities"
connectionString="
metadata=res://*/PizzaSoftwareEntityModel.csdl|res://*/PizzaSoftwareEntityModel.ssdl|res://*/PizzaSoftwareEntityModel.msl;
provider=System.Data.SqlClient;
provider connection string="
Data Source=./SQLEXPRESS;
Initial Catalog=SaharaPizza;
Integrated Security=True;
MultipleActiveResultSets=True
""
providerName="System.Data.EntityClient"
/>
¿Qué podría estar causando este error?
La cadena de conexión se ve como una cadena válida para el proveedor de EntityClient, así que supongo que sería del mensaje de excepción que "la conexión con nombre especificado no se encuentra en la configuración".
El nombre de la cadena de conexión en la configuración es "SaharaPizzaEntities". ¿Especificó explícitamente la "conexión nombrada" cuando creó su contexto de objeto derivado?
La clase de contexto de objeto generado tiene varios constructores, uno es sin parámetros:
public EntityModelContainer() : base("name=EntityModelContainer",
"EntityModelContainer")
name=EntityModelContainer
es el nombre de la cadena de conexión que debe coincidir con la cadena de conexión en su archivo de configuración ("SaharaPizzaEntities"). Puede cambiar el nombre en el archivo de configuración o usar el segundo constructor, que permite definir explícitamente el nombre de la cadena de conexión:
public EntityModelContainer(string connectionString) : base(connectionString,
"EntityModelContainer")
Tuve el mismo problema, así que estaba usando el hilo 2 como tú y pensé que era porque en la biblioteca no se ejecuta, entonces lo puse en el proyecto principal y luego comencé a trabajar con éxito. Esta podría ser una solución, no lo que necesita, pero podría resolver con esto
por favor disculpe mi inglés
espero que esto pueda ayudarte
Copie <connectionStrings>
de App.Config desde PizzaSoftware.Data a web.config desde PizzaSoftware.UI y agregue a web.config
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</assemblies>
Acabo de descubrir que si se crea un directorio virtual para una aplicación en IIS desde VS2010 dos niveles desde la raíz del sitio web, este error podría ocurrir. No estoy seguro de por qué sucede, tendría que investigar más. Por ejemplo, si su aplicación se encuentra en esta ruta: /admin/advertiser
el error aparecerá si no tiene /admin
directorio virtual en su sitio IIS.
Todo lo que hice fue crear un directorio de admin
vacío en mi .../intepub/wwwroot
y desapareció el error.
Descubrirá que no podrá iniciar la depuración hasta que realice el paso anterior.
Tuvimos este problema en nuestro equipo en el pasado, tomó algo de tiempo recordarlo, pero así fue como lo arreglamos antes también.
El problema se puede resolver fácilmente. Simplemente copie su cadena de conexión de Aap.Config
a Web.config
, esto seguramente ejecutará sus aplicaciones. Esto funciona bien para mí.
El error ocurre cuando tiene una clase de datos / entidad en otro proyecto y páginas web en un proyecto separado.
También estaba enfrentando el mismo problema en mi proyecto. Estaba teniendo 3 proyectos diferentes
- Datos en los que agregué el marco de la entidad. este proyecto tenía el archivo App.config con la cadena de conexión
- Presentador: con mi presentador
- Vista: con interfaz de usuario.
Acabo de copiar la cadena de conexión en la configuración de la aplicación de View y funciona bien.
y la razón del problema era "" "La cadena de conexión no estaba disponible localmente, donde se requería" "".
En su app.config, su cadena de conexión parece ...
connection string="
Data Source=./SQLEXPRESS;
Initial Catalog=SaharaPizza;
Integrated Security=True;
MultipleActiveResultSets=True
"
Observe el & quot. Intenta cambiar eso a una sola cita ''
Aquí hay una cadena de conexión de muestra que no funcionaba
mi error al dar la cadena de conexión era
<connectionStrings>
<add name="IEMRWEBSEntities" connectionString="metadata=res://*/IemrWebs.csdl|res://*/IemrWebs.ssdl|res://*/IemrWebs.msl;provider=System.Data.SqlClient;provider connection string="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"" providerName="System.Data.EntityClient" />
El problema es con el camino
vea el * usado en la cadena de conexión
"metadata=res://*/IemrWebs.csdl|res://*/IemrWebs.ssdl|res://*
reemplace * con el espacio de nombre en el que se coloca su archivo edmx
coloque el espacio de nombres en lugar de * en su archivo appconfig
mi espacio de nombres del archivo edmx es IemrWebs.Data.Model por lo que he reemplazado * con IemrWebs.Data.Model ver a continuación y está trabajando a continuación es la cadena de conexión correcta
<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="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"" providerName="System.Data.EntityClient" />
Tengo el mismo problema y probé todo el método mencionado. finalmente lo resolví como lo mencioné. En mi caso, tengo una capa de datos y una capa de presentación por separado. en mi app.config (capa de datos) tengo una conexión como esta.
<add name="LibraryMgtSysEntities" connectionString="metadata=res://*/DataLibraryMgtSys.csdl|res://*/DataLibraryMgtSys.ssdl|res://*/DataLibraryMgtSys.msl;provider=System.Data.SqlClient;provider connection string="data source=abc;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=123;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
en mi web.config
configuré la conexión manualmente de la siguiente manera:
<add name="DefaultConnection" providerName="System.Data.SqlClient"
connectionString="Data Source=abc;
Initial Catalog=LibraryMgtSys;
Integrated Security=SSPI;
user id=sa;password=123;" />
me da la misma excepción que mencioné anteriormente. así que lo resolví agregando el valor de app.config en el archivo de configuración web.
mi último archivo web.config
la siguiente manera:
<connectionStrings>
<clear />
<add name="LibraryMgtSysEntities" connectionString="metadata=res://*/DataLibraryMgtSys.csdl|res://*/DataLibraryMgtSys.ssdl|res://*/DataLibraryMgtSys.msl;provider=System.Data.SqlClient;provider connection string="data source=TILANITHOTAMUNE/SQLEXPRESS;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=testing;MultipleActiveResultSets=True"" 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>
Creo que su archivo de configuración no está en el proyecto web, está en alguna otra DLL ... no estoy tan seguro ... pero su cadena de conexión debe estar en el web.config del proyecto que se está ejecutando ...