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="Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
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. :)
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
System.Configuration
hinzu. Das wird sicher funktionieren. Auch für die NameValueCollection
müssen Sie schreiben:
using System.Collections.Specialized;
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.
Hinzu kommt diese Antwort, da keine der vorgeschlagenen Lösungen für mich funktioniert.
- Klicken Sie mit der rechten Maustaste auf die Registerkarte "Referenzen", um eine Referenz hinzuzufügen.
- Klicken Sie auf die Registerkarte Assemblies
- Suche nach 'System.Configuration'
- OK klicken.
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;
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:
System.Configuration
als Referenz zu Ihrem References -Abschnitt hinzu.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.
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.
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.
Wenn Sie den System.Configuration
als Referenz zu allen Projekten hinzufügen, wird dies gelöst.
Gehe zu Project
-> Add Reference
Klicken Sie in dem daraufhin angezeigten Feld in der Liste auf der linken Seite auf die Registerkarte All assemblies
.
Scrollen Sie in der zentralen Liste zu System.Configuration
und stellen Sie sicher, dass das Kontrollkästchen aktiviert ist.
Klicken Sie auf OK, um sich zu bewerben, und Sie können jetzt auf die ConfigurationManager
-Klasse zugreifen.
Wenn sich dieser Code in einem separaten Projekt befindet, z. B. in einem Bibliotheksprojekt. __Lassen Sie nicht den Verweis auf system.configuration hinzu.
jetzt kannst du:
using System.Configuration;
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.
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