Estoy tratando de acceder connectionStrings
desde el archivo de configuración. El código es ASP.NET + C #. He agregado System.Configuration
a referencia y también mencioné con el uso. Pero aún 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 ensamblado que se muestra como "System.configuration", una c minúscula que no es cómo se muestran los nombres para otros ensamblados 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>
Respuestas:
No solo es necesario usar el espacio de nombres
System.Configuration
. También debe agregar la referencia al ensamblajeSystem.Configuration.dll
, porSystem.Configuration
.Esto funcionará seguro. También para el
NameValueCollection
tienes que escribir:fuente
En su proyecto, haga clic con el botón derecho, Agregar referencia ... , en la pestaña .NET, busque el
System.Configuration
nombre del componente y haga clic en Aceptar.using System.Configuration
le dice al compilador / IntelliSense que busque en ese espacio de nombres cualquier clase 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 nombresSome.Random.Name
. Por claridad / consistencia, generalmente son los mismos, pero hay excepciones.fuente
Ok ... funcionó después de reiniciar el VSTS. El enlace sugirió la solución para el mismo problema. Ojalá pudiera haberlo visto antes. :)
fuente
Agregar el
System.Configuration
como referencia a todos los proyectos resolverá esto.Ir a
Project
->Add Reference
En el cuadro que aparece, haga clic en la
All assemblies
pestaña de la lista en la lista de la izquierda.En la lista central, desplázate
System.Configuration
y asegúrate de que la casilla esté marcada.Haga clic en Aceptar para aplicar, y ahora podrá acceder a la
ConfigurationManager
clase.fuente
Agregando esta respuesta, ya que ninguna de las soluciones sugeridas funciona para mí.
fuente
Si recibe muchas advertencias (¡en mi caso 64 en una solución!) Como
Debido a que está actualizando un proyecto anterior, puede ahorrar mucho tiempo de la siguiente manera:
System.Configuration
como referencia a su sección de Referencias .Agregue las siguientes dos
using
declaraciones al principio de cada.cs
archivo class ( ):using System.Configuration; using ConfigurationSettings = System.Configuration.ConfigurationManager;
Por este cambio, todas las ocurrencias de
ahora hará referencia al administrador de configuración correcto, ya no el obsoleto, y todas las advertencias CS0618 desaparecerán de inmediato.
Por supuesto, tenga en cuenta que este es un truco rápido. A largo plazo, debería considerar refactorizar el código.
fuente
He conseguido una mejor solución para el problema
configurationmanager does not exist in the current context
.Para leer una cadena de conexión
web.config
, necesitamos usar laConfigurationManager
clase y su método. Si desea usar, debe agregar espacio de nombres usandoSystem.Configuration
;Aunque utilizó este espacio de nombres, cuando intenta utilizar la
ConfigurationManager
clase, el sistema muestra un error "el administrador de configuración no existe en el contexto actual". Para resolver este problema:fuente
¿Está seguro de haber agregado una referencia al ensamblado .NET y no otra cosa? Quitaría su referencia y luego trataría de volver a agregarla, asegurándome de seleccionar desde 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.
fuente
ahora usted puede:
fuente
Para una comprobación de integridad, 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.
Debería 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 se ve así y se compila sin problemas.
Esto supone que tengo una cadena de conexión en mi web.config con un nombre igual a "MyConnectionStringName" así ...
Sí, es elemental, lo sé. Pero si no tienes mejores ideas, a veces es útil comparar algo realmente simple que sabes que debería funcionar.
fuente
Solo instala
luego usa
fuente
Si este código está en un proyecto separado, como un proyecto de biblioteca. No olvide agregar referencia a system.configuration.
fuente
También puede obtener este error si agrega una referencia a un proyecto diferente y no relacionado por error. Compruebe si eso se aplica a usted.
fuente
Para resolver este problema, vaya al Explorador de soluciones y haga clic con el botón derecho en referencia y haga clic en agregar referencia y elija .net y busque system.configuration seleccione un clic y haga clic en Aceptar
fuente
Agregue el archivo del administrador de configuración para conectarse a la base de datos web.config
fuente