C sharp - Referencia de objeto no establecida como instancia de un objeto

 
Vista:

Referencia de objeto no establecida como instancia de un objeto

Publicado por Victor (3 intervenciones) el 16/05/2018 16:37:43
Hola, vengo del mundo de Delphi y estoy recien comenzando los pasos en C#.

Estoy tratando hacer una conexiòn a una BD MySql mediante una clase que llama al archivo de configuración de la siguiente manera.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class ClsConexionDB
{
 
    public string cadenaapp;
 
    public string obtenercadena()
    {
        try
        {
            cadenaapp = ConfigurationManager.ConnectionStrings["coneccion"].ConnectionString;
 
            return cadenaapp;
        }
        catch (Exception ex)
        {
            throw new ArgumentException("Error de Conexión", ex);
        }
    }
}

El archivo de configuración está de la siguiente forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="ClasedeDatos.conexion" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
  <startup>
    <supportedRuntime version="4.0" sku=".NETFramework,Version=v4.5"/>
  </startup>
  <connectionStrings>
    <add name="coneccion" connectionString="server=localhost; database=nombreDB; Uid=usuario; pwd=xxxx;" providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>
</configuration>

El problema está, que cuando pasa por la instrucción:

1
cadenaapp = ConfigurationManager.ConnectionStrings["coneccion"].ConnectionString;

Salta inmediatamente al catch y me sale el error "Referencia de objeto no establecida como instancia de un objeto".

¿Cual puede ser el problema en esto?, por favor help me!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 310
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Referencia de objeto no establecida como instancia de un objeto

Publicado por Agustin (102 intervenciones) el 16/05/2018 17:07:18
Ese error es un NullReferenceException, es decir, seguramente el siguiente codigo:

1
ConfigurationManager.ConnectionStrings["coneccion"]

Te está devolviendo null.

Para eso existe el operador ?. en C#:

1
var connectionString = ConfigurationManager.ConnectionStrings["coneccion"]?.ConnectionString;

Por otro lado, si el config esta correcto me llama la atención que la Connection String te devuelva null.

El app.config tiene que estar en el proyecto "principal" digamos, o sea el startup project.

Fijate que sea efectivamente asi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Referencia de objeto no establecida como instancia de un objeto

Publicado por Victor (3 intervenciones) el 16/05/2018 17:11:56
Efectivamente Agustín, el problema estaba en que había modificado el app.config de la capa de datos y no la principal.
Lo modifiqué y ahora sí se conecta correctamente.
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 882
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Referencia de objeto no establecida como instancia de un objeto

Publicado por Wilfredo Patricio Castillo (413 intervenciones) el 16/05/2018 23:06:06
Bienvenido al mundo .NET.

Solo hacerte unas cuantas recomendaciones:

Tu clase conexionDb podrías hacerla estática.

cadenaapp, no tienes porque hacerla pública, sino, no tiene sentido la función ObtenerCadena().
pública la variable y pública la función no es el camino correcto, para lo cual solo debes exponer propiedades como públicas y los métodos o funciones que te devuelvan lo que necesites.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Referencia de objeto no establecida como instancia de un objeto

Publicado por Victor (3 intervenciones) el 17/05/2018 15:50:49
Gracias, seguiré tus recomendaciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar