it-swarm.com.de

Der Name 'ConfigurationManager' ist im aktuellen Kontext nicht vorhanden

Ich versuche, auf connectionStrings von der Konfigurationsdatei zuzugreifen. Der Code lautet ASP.NET + C #. Ich habe System.Configuration zur Referenz hinzugefügt und auch bei der Verwendung erwähnt. Trotzdem würde es die Versammlung nicht akzeptieren.

Ich verwende VSTS 2008. Irgendeine Idee, was der Grund sein könnte? 

Eine andere seltsame Sache ist der Assemblyname, der als "System.configuration" angezeigt wird, ein Kleinbuchstabe c, bei dem Namen nicht für andere Systemassemblys angezeigt werden.

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=&quot;Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>
409
pencilslate

Ok .. es funktionierte nach dem Neustart des VSTS. Der link schlug die Lösung für dasselbe Problem vor. Ich wünschte, ich hätte es schon früher gesehen. :)

36
pencilslate

Es ist nicht nur notwendig, den Namespace System.Configuration zu verwenden. Sie müssen auch die Referenz zur Assembly System.Configuration.dll von hinzufügen

  1. Klicken Sie mit der rechten Maustaste auf Referenzen/Abhängigkeiten.
  2. Wählen Sie Referenz hinzufügen 
  3. Suchen und fügen Sie System.Configuration hinzu. 

Das wird sicher funktionieren. Auch für die NameValueCollection müssen Sie schreiben:

using System.Collections.Specialized;
758
Kieran

Klicken Sie in Ihrem Projekt mit der rechten Maustaste auf Add Reference ... , suchen Sie auf der Registerkarte .NET den Namen der System.Configuration-Komponente und klicken Sie auf OK.

using System.Configuration weist den Compiler/IntelliSense an, in diesem Namespace nach allen von Ihnen verwendeten Klassen zu suchen. Andernfalls müssten Sie jedes Mal den vollständigen Namen (System.Configuration.ConfigurationManager) verwenden. Wenn Sie den Verweis jedoch nicht hinzufügen, wird dieser Namespace/diese Klasse nirgendwo gefunden.

Beachten Sie, dass ein DLL einen beliebigen Namespace haben kann, daher könnte die Datei System.Configuration.dll theoretisch den Namespace Some.Random.Name haben. Aus Gründen der Klarheit/Konsistenz sind sie normalerweise gleich, aber es gibt Ausnahmen.

94
Rameez

Hinzu kommt diese Antwort, da keine der vorgeschlagenen Lösungen für mich funktioniert. 

  1. Klicken Sie mit der rechten Maustaste auf die Registerkarte "Referenzen", um eine Referenz hinzuzufügen.
  2. Klicken Sie auf die Registerkarte Assemblies
  3. Suche nach 'System.Configuration' 
  4. OK klicken.
17

Ich habe eine bessere Lösung für das Problem configurationmanager does not exist in the current context erhalten. 

Für eine gelesene Verbindungszeichenfolge aus web.config müssen wir die ConfigurationManager-Klasse und ihre Methode verwenden. Wenn Sie verwenden möchten, müssen Sie den Namespace mithilfe von System.Configuration hinzufügen.

Obwohl Sie diesen Namespace verwendet haben, zeigt das System beim Versuch, die ConfigurationManager-Klasse zu verwenden, den Fehler "Konfigurationsmanager ist nicht im aktuellen Kontext vorhanden" . So lösen Sie dieses Problem:

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 
9
Emu

Wenn Sie viele Warnungen erhalten (in meinem Fall 64 in einer Lösung!), Wie

CS0618: 'ConfigurationSettings.AppSettings' ist veraltet: 'Diese Methode ist veraltet, sie wurde durch System.Configuration! System.Configuration.ConfigurationManager.AppSettings' ersetzt.

da Sie ein älteres Projekt aktualisieren, können Sie wie folgt viel Zeit sparen:

  1. Fügen Sie System.Configuration als Referenz zu Ihrem References -Abschnitt hinzu.
  2. Fügen Sie die folgenden beiden using-Anweisungen am Anfang jeder Klassendatei (.cs) hinzu:

    using System.Configuration; using ConfigurationSettings = System.Configuration.ConfigurationManager;

Durch diese Änderung sind alle Vorkommnisse von 

ConfigurationSettings.AppSettings["mySetting"]

jetzt wird auf den richtigen Konfigurationsmanager verwiesen, nicht mehr auf den veralteten, und alle CS0618-Warnungen werden sofort gelöscht.

Denken Sie natürlich daran, dass dies ein schneller Hack ist. Langfristig sollten Sie den Code überarbeiten.

8
Matt

Sind Sie sicher, dass Sie einen Verweis auf die .NET Assembly hinzugefügt haben und nicht etwas anderes? Ich entferne Ihren Verweis und versuche dann, ihn erneut hinzuzufügen. Vergewissern Sie sich, dass Sie im Referenzdialog von Visual Studio auf der Registerkarte .NET die Option ausgewählt haben.

6
Dan Diplo

Versuchen Sie für eine Sicherheitsüberprüfung, ein neues Webanwendungsprojekt zu erstellen. Öffnen Sie den Code dahinter für die Seite Default.aspx. Fügen Sie in PageLoad eine Zeile hinzu, um auf Ihre Verbindungszeichenfolge zuzugreifen.

Es sollte standardmäßig System.Configuration als Referenz hinzugefügt werden. Sie sollten auch die using-Anweisung oben in Ihrer Codedatei sehen.

Mein Code hinter der Datei sieht jetzt so aus und wird ohne Probleme kompiliert.

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;
    }
  }
}

Dies setzt voraus, dass ich in meiner web.config eine Verbindungszeichenfolge mit einem Namen wie "MyConnectionStringName" habe ...

<?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>

Ja, es ist elementar, ich weiß es. Wenn Sie jedoch keine besseren Ideen haben, hilft es manchmal, etwas zu überprüfen, das wirklich einfach ist und von dem Sie wissen, dass es funktionieren sollte.

4
Nevada

Wenn Sie den System.Configuration als Referenz zu allen Projekten hinzufügen, wird dies gelöst.

  1. Gehe zu Project -> Add Reference

  2. Klicken Sie in dem daraufhin angezeigten Feld in der Liste auf der linken Seite auf die Registerkarte All assemblies.

  3. Scrollen Sie in der zentralen Liste zu System.Configuration und stellen Sie sicher, dass das Kontrollkästchen aktiviert ist.

  4. Klicken Sie auf OK, um sich zu bewerben, und Sie können jetzt auf die ConfigurationManager-Klasse zugreifen.

4
calios

Wenn sich dieser Code in einem separaten Projekt befindet, z. B. in einem Bibliotheksprojekt. __Lassen Sie nicht den Verweis auf system.configuration hinzu.

1
Steve Rey
  1. Klicken Sie mit der rechten Maustaste auf Projekt
  2. Wählen Sie Manager NuGet Package aus
  3. System.Configuration suchen
  4. Wählen Sie System.Configuration.ConfigurationManager von Microsoft aus
  5. Installieren

jetzt kannst du:

using System.Configuration;
1
Samir Morimoto

Diese Fehlermeldung wird möglicherweise auch angezeigt, wenn Sie versehentlich eine Referenz zu einem anderen, nicht verwandten Projekt hinzufügen. Prüfen Sie, ob das für Sie zutrifft.

0
Ike

Um dieses Problem zu lösen, gehen Sie zum Projektmappen-Explorer. Klicken Sie mit der rechten Maustaste auf die Referenz und klicken Sie auf Referenz hinzufügen

0
Keshav Patel