nombre - obtener cadena de conexion app config c#
El nombre ''ConfigurationManager'' no existe en el contexto actual (13)
Estoy tratando de acceder a connectionStrings
desde el archivo de configuración. El código es ASP.NET + C #. He agregado System.Configuration
a la referencia y también he mencionado con el uso. Pero aun así no aceptaría la asamblea.
Estoy usando VSTS 2008. ¿Alguna idea de cuál podría ser la razón?
Otra cosa extraña es el nombre del conjunto que se muestra como "Configuración del sistema", una c minúscula que no muestra cómo se muestran los nombres de otros conjuntos del sistema.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
namespace Utility
{
public class CommonVariables
{
public static String ConnectionString
{
get { return ConfigurationManager.ConnectionStrings["EmployeeEntities"].ConnectionString; }
}
}
}
Config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="qbankEntities" connectionString="metadata=res://*/qbankModel.csdl|res://*/qbankModel.ssdl|res://*/qbankModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
- Haga clic derecho en Proyecto
- Seleccione Manager NuGet Package
- Encuentra System.Configuration
- Seleccione System.Configuration.ConfigurationManager por Microsoft
- Instalar
ahora usted puede:
using System.Configuration;
¿Está seguro de que ha agregado una referencia al ensamblado de .NET y no a otra cosa? Quitaré su referencia y luego intentaré volver a agregarla, asegurándome de que selecciona de la pestaña .NET en el diálogo de referencia de Visual Studio; la última versión debería ser 2.0.0.0 en GAC.
Agregando esta respuesta, ya que ninguna de las soluciones sugeridas funciona para mí.
- Haga clic derecho en la pestaña de referencias para agregar referencia.
- Haga clic en la pestaña de Asambleas
- Buscar ''System.Configuration''
- Haga clic en Aceptar.
En su proyecto, haga clic con el botón derecho, Agregar referencia ... , en la pestaña .NET, busque el nombre del componente System.Configuration
y haga clic en Aceptar.
using System.Configuration
le dice al compilador / IntelliSense que busque en ese espacio de nombres las clases que use. De lo contrario, tendría que usar el nombre completo ( System.Configuration.ConfigurationManager
) cada vez. Pero si no agrega la referencia, ese espacio de nombres / clase no se encontrará en ninguna parte.
Tenga en cuenta que una DLL puede tener cualquier espacio de nombres, por lo que el archivo System.Configuration.dll
podría, en teoría, tener el espacio de nombres Some.Random.Name
. Para mayor claridad / consistencia suelen ser los mismos, pero hay excepciones.
He obtenido una mejor solución para el problema: el administrador de configurationmanager does not exist in the current context
.
Para una cadena de conexión de lectura desde web.config
necesitamos usar la clase ConfigurationManager
y su método. Si desea usar, necesita agregar espacio de nombres usando System.Configuration
;
Aunque utilizó este espacio de nombres, cuando intenta usar la clase ConfigurationManager
, el sistema muestra un error "el administrador de configuración no existe en el contexto actual". Para resolver este problema:
ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString;
La adición de System.Configuration
como referencia a todos los proyectos resolverá esto.
Ir al
Project
->Add Reference
En el cuadro que aparece, haga clic en la pestaña Lista de
All assemblies
lista de la izquierda.En la lista central, desplácese hasta
System.Configuration
y asegúrese de que la casilla esté marcada.Haga clic en Aceptar para aplicar, y ahora podrá acceder a la clase
ConfigurationManager
.
No solo es necesario utilizar el espacio de nombres System.Configuration
. También debe agregar la referencia al ensamblado System.Configuration.dll
, mediante
- Haga clic derecho en las referencias / dependencias
- Elija Agregar referencia
- Encuentra y agrega
System.Configuration
.
Esto funcionará seguro. También para NameValueCollection
tienes que escribir:
using System.Collections.Specialized;
Ok .. funcionó después de reiniciar el VSTS. El link sugiere la solución para el mismo problema. Ojalá lo hubiera visto antes. :)
Para resolver este problema, vaya al Explorador de soluciones. Haga clic con el botón derecho en Referencia y haga clic en Agregar referencia y elija .net y busque el sistema. Configuración Seleccione un clic Aceptar
Para una comprobación de validez, intente crear un nuevo proyecto de aplicación web, abra el código que se encuentra detrás de la página Default.aspx. Agregue una línea en Page_Load para acceder a su cadena de conexión.
Debe tener System.Configuration agregado como referencia por defecto. También debería ver la declaración de uso en la parte superior de su archivo de código ya.
Mi código detrás del archivo ahora tiene este aspecto y se compila sin problemas.
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string connString = ConfigurationManager.ConnectionStrings["MyConnectionStringName"].ConnectionString;
}
}
}
Esto asume que tengo una cadena de conexión en mi web.config con un nombre igual a "MyConnectionStringName" como así ...
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="MyConnectionStringName"
connectionString="Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Sí, es elemental lo sé. Pero si no tienes mejores ideas, a veces es útil verificar algo realmente simple que sabes que debería funcionar.
Si está recibiendo muchas advertencias (en mi caso, ¡64 en una solución!) Como
CS0618: ''ConfigurationSettings.AppSettings'' está obsoleto: ''Este método está obsoleto, ha sido reemplazado por System.Configuration! System.Configuration.ConfigurationManager.AppSettings''
porque está actualizando un proyecto anterior, puede ahorrar mucho tiempo de la siguiente manera:
- Agregue
System.Configuration
como una referencia a su sección de Referencias . Agregue las dos siguientes declaraciones de
using
en la parte superior de cada archivo de clase (.cs
):using System.Configuration; using ConfigurationSettings = System.Configuration.ConfigurationManager;
Por este cambio todas las apariciones de
ConfigurationSettings.AppSettings["mySetting"]
ahora hará referencia al administrador de configuración correcto, ya no está en desuso, y todas las advertencias del CS0618 desaparecerán de inmediato.
Por supuesto, ten en cuenta que esto es un hack rápido. A largo plazo, debe considerar refactorizar el código.
Si este código está en un proyecto separado, como un proyecto de biblioteca. No intente agregar una referencia a la configuración del sistema.
También puede obtener este error si agrega una referencia a un proyecto diferente, no relacionado por error. Compruebe si eso se aplica a usted.