Pregunta

Cuando inicio mi aplicación obtengo: 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>

La pila es:

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 entiendo este. Encontré muchas respuestas en Google, pero ninguna realmente solucionó mi problema.

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

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

EDITAR:

Código de falla:

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

sqlQuery es una consulta como " select * from table " ;. sqlParams no es relevante aquí.

El otro problema aquí es que mi compañía usa MySQLHelper y no tengo visibilidad sobre él (solo tengo un dll para una lib de ayuda). Ha estado funcionando bien en otros proyectos, así que estoy 99% 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 asistente para obtener el código.

¿Fue útil?

Solución

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

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

ConfigurationManager.AppSettings [" ConnectionString "] buscaría en el AppSettings algo llamado ConnectionString , que no encontraría. Es por eso que su mensaje de error indicaba el " ConnectionString " la propiedad no se ha inicializado , porque está buscando una propiedad inicializada de AppSettings llamada ConnectionString .

ConfigurationManager.ConnectionStrings [" MyDB "]. ConnectionString indica que busque la cadena de conexión llamada " MyDB " ;.

Aquí hay alguien hablando sobre el uso de cadenas de conexión web.config

Otros consejos

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

Si está asignando mediante programación una fuente de datos (como un SqlDataSource) o creando 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 está conectando un elemento enlazado a un origen de datos (es decir, un GridView o ComboBox a un SqlDataSource), asegúrese de que el origen de datos esté asignado a una de sus cadenas de conexión.

Publique su código (para que el elemento enlazado a datos y el web.config sean seguros) y podemos echarle un vistazo.

EDITAR: creo que el problema es que está intentando obtener la Cadena de conexión del área AppSettings, y programáticamente no es donde existe. Intente reemplazar eso con ConfigurationManager.ConnectionStrings [" ConnectionString "]. ConnectionString (si ConnectionString es el nombre de su cadena de conexión)

La cadena de conexión es no en AppSettings .

Lo que estás buscando está en:

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

Use [] en lugar de () como el siguiente ejemplo.

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

Simplemente en Código detrás del uso de la página: -

SqlConnection con = new SqlConnection("Data Source = DellPC; Initial Catalog = Account; user = sa; password = admin");

Debería funcionar bien

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top