2009-06-17 208 views
24

Cuando inicio mi aplicación obtengo: La propiedad ConnectionString no se ha inicializado.Cómo solucionar "La propiedad ConnectionString no se ha inicializado"

Web.config:

<connectionStrings> 
    <add name="MyDB" 
     connectionString="Data Source=localhost\sqlexpress;Initial Catalog=mydatabase;User Id=myuser;Password=mypassword;" /> 
</connectionStrings> 

El ser pila:

System.Data.SqlClient.SqlConnection.PermissionDemand() +4876643 
System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) +20 
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117 
System.Data.SqlClient.SqlConnection.Open() +122 

Soy bastante nuevo en .NET y no consigo éste. Encontré muchas respuestas en Google, pero ninguna realmente solucionó mi problema.

¿Qué significa eso? ¿Es mi web.config malo? ¿Mi función es mala? ¿Mi configuración de SQL no funciona correctamente (estoy usando sqlexpress)?

Mi problema principal aquí es que no estoy seguro de por dónde empezar a depurar esto ... cualquier cosa ayudaría.

EDIT:

código de reprobación:

MySQLHelper.ExecuteNonQuery(
ConfigurationManager.AppSettings["ConnectionString"], 
CommandType.Text, 
sqlQuery, 
sqlParams); 

SQLQuery es una consulta como "seleccionar * de la tabla". sqlParams no es relevante aquí.

El otro problema aquí es que mi empresa usa MySQLHelper, y no tengo visibilidad sobre él (solo tengo un dll para una lib auxiliar). Ha funcionado bien en otros proyectos, así que estoy 99% de que el error no viene de aquí.

Supongo que si no hay forma de depurarlo sin ver el código, tendré que esperar para ponerme en contacto con la persona que creó este helper para obtener el código.

+1

¿Se puede publicar la cadena de conexión de webconfig, y el código de error que lo utiliza? – kscott

+0

agregó algunas informaciones – marcgg

Respuesta

27

referencia a la cadena de conexión se debe hacer como tal:

MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString, 
CommandType.Text, 
sqlQuery, 
sqlParams); 

ConfigurationManager.AppSettings["ConnectionString"] estaría buscando en el AppSettings por algo llamado ConnectionString, que no lo encontraría. Es por eso que su mensaje de error indicó "ConnectionString" property has not been initialized, porque está buscando una propiedad inicializada de AppSettings llamada ConnectionString.

ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString da instrucciones para buscar la cadena de conexión llamada "MyDB".

Here is someone talking about using web.config connection strings

+0

¡Lo arregló! ¿Lo que estoy haciendo es una mala práctica? – marcgg

+0

¿Qué quieres decir? La forma en que intentabas hacer referencia a la cadena de conexión era incorrecta; sin embargo, si intentabas hacer referencia al valor de algún nodo de AppSettings, habría sido correcto. – kscott

+0

Quiero decir, ¿es tan malo obtener la cadena de conexión de esa manera? – marcgg

15

Obtiene este error cuando un origen de datos intenta vincularse a datos pero no puede porque no puede encontrar la cadena de conexión. En mi experiencia, esto no suele deberse a un error en el web.config (aunque no estoy 100% seguro de esto).

Si asigna mediante programación una fuente de datos (como un SqlDataSource) o crea una consulta (es decir, utilizando una combinación SqlConnection/SqlCommand), asegúrese de asignarle una ConnectionString.

SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString; 

Si va a conectar un elemento de enlace de datos a un origen de datos (es decir, un GridView o ComboBox a un SqlDataSource), asegúrese de que la fuente de datos se asigna a una de sus cadenas de conexión.

Publique su código (para el elemento de datos y el web.config para estar seguro) y podemos echarle un vistazo.

EDIT: Creo que el problema es que está tratando de obtener la Cadena de conexión en el área AppSettings, y programáticamente no está donde existe. Intente reemplazarlo con ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString (si ConnectionString es el nombre de su cadena de conexión).)

+0

Agregué un código, no estoy seguro de si mi problema está más claro. – marcgg

+0

No estoy seguro de si lo obtengo, ¿debo mover la ubicación de la cadena de conexión en web.config? – marcgg

+0

no está en la AppSettings por cierto – marcgg

3

La cadena de conexión es no en AppSettings.

Lo que estamos buscando es en:

System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]... 
0

Utilice [] en lugar de() de la siguiente ejemplo.

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString); 
      DataTable data = new DataTable(); 
      DataSet ds = new DataSet(); 
Cuestiones relacionadas