Microsoft Developer Network > Página principal de foros > Foros de Desarrollo > ASP.NET > obtener cadena de conexion de web.config + asp.net 4

Respondida obtener cadena de conexion de web.config + asp.net 4

  • jueves, 09 de febrero de 2012 4:16
     
     

    Hola

    Estoy desarrollando un sitio con asp.net 4 he definido unas clases para el acceso a datos y quiero dentro de esta clase obtener la cadena de conexión desde el web.config.

    este es el codigo que tengo:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using TCC_Envios.Entidades;

    namespace TCC_Envios.DataAcces
    {
    public static class ServicioDAL
    {
    private static SqlConnection con = new SqlConnection();

    public static List<ServicioEntidad> ObtenerTodos()
    {
    List<ServicioEntidad> list = new List<ServicioEntidad>();

    ConnectionStringSettings strConnString = ConfigurationManager.ConnectionStrings["Default"];
    con.ConnectionString = strConnString.ConnectionString;

    using (SqlConnection conn = new SqlConnection(con.ConnectionString.ToString()))
    {
    conn.Open();

    string sql = @"SELECT Id, Nombre, Descripcion FROM Servicios ORDER BY Nombre";
    SqlCommand cmd = new SqlCommand(sql, conn);

    SqlDataReader reader = cmd.ExecuteReader();

    while (reader.Read())
    {
    list.Add(Cargar(reader));
    }
    }
    return list;
    }

    }

    }

    Pero cuando ejecuto esto me dice "No se puede encontrar el tipo o el nombre de espacio de nombres 'ConnectionStringSettings' (¿falta una directiva using o una referencia de ensamblado?)"

    he visto en algunos foros que lo que tengo es que agregar una referencia en el sitio web a "system.configuration" pero cuando intento hacer esto visual studio 2010 me informa que ya existe esta referencia.

    ¿Quisiera saber que debo configurar para que no me muestre error, o que errores tengo en el codigo?

    Agradezco su colaboración

    Cordial saludo.

Respuestas

Todas las respuestas

  • jueves, 09 de febrero de 2012 5:07
    Moderador
     
     Respondida

    hola

    que sucede si haces

    con.ConnectionString = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

  • jueves, 09 de febrero de 2012 16:27
     
     

    Yo te aconsejaria crear una clase en la que definas el connection string.. algo así

            

    public static string ConnectionString
            {
                get
                {
                    return ConfigurationManager.ConnectionStrings[ConnectionStringName].ConnectionString;
                }
            }

            public static string ConnectionStringName
            {
                get
                {
                    return ConfigurationManager.AppSettings["ConnectionStringName"];
                }
            }

     Luego en la clase que definas el acceso a datos solo deberias hacer esto:

       using (SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString))

  • viernes, 10 de febrero de 2012 3:05
     
     

    Hola leandro

    De antemano agradezco tu colaboración, te cuento que al colocar este sentencia que propones obtengo el siguiente error:

    " El nombre 'ConfigurationManager' no existe en el contexto actual "

    He pensado que son errores del net framework o visual studio ¿si es posible que pueda ser por eso?

    Cordial saludo

  • viernes, 10 de febrero de 2012 3:11
     
     

    Hola ThomYorkkk

    Agradezco tu colaboración, hize la prueba con el codigo que me sugeriste pero obtuve el error:

    " El nombre 'ConfigurationManager' no existe en el contexto actual "

    ¿Porque crees que se pueda dar este error?

    cordial saludo.

  • viernes, 10 de febrero de 2012 8:43
     
     

    Porque no has añadido la referencia en el proyecto.

    Menú Proyecto, Agregar referencia y seleccionas System.Configuration.

    Si no es así, trata de llamar a la clase implícitamente:

    con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Default"].ConnectionString;