Próbuję uzyskać dostęp connectionStrings
z pliku konfiguracyjnego. Kod to ASP.NET + C #. Dodałem System.Configuration
do odniesienia, a także wspomniałem przy użyciu. Ale nadal nie zaakceptuje zgromadzenia.
Używam VSTS 2008. Masz pomysł, co może być przyczyną?
Inną dziwną rzeczą jest nazwa zestawu wyświetlana jako „System.configuration”, mała litera c, która nie jest sposobem wyświetlania nazw dla innych zestawów System.
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; }
}
}
}
Konfiguracja:
<?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>
c#
.net
visual-studio
visual-studio-2008
kredka
źródło
źródło
Odpowiedzi:
Przestrzeń nazw jest nie tylko konieczna
System.Configuration
. Musisz również dodać odwołanie do zestawuSystem.Configuration.dll
, wgSystem.Configuration
.To na pewno zadziała. Również dla
NameValueCollection
musisz napisać:źródło
W swoim projekcie kliknij prawym przyciskiem myszy, Dodaj odniesienie ... , na karcie .NET znajdź
System.Configuration
nazwę komponentu i kliknij OK.using System.Configuration
informuje kompilator / IntelliSense, aby przeszukał w tej przestrzeni nazw wszystkie używane klasy. W przeciwnym razie będziesz musiał użyć pełnej nazwy (System.Configuration.ConfigurationManager
) za każdym razem. Ale jeśli nie dodasz odwołania, ta przestrzeń nazw / klasa nie zostanie nigdzie znaleziona.Pamiętaj, że biblioteka DLL może mieć dowolną przestrzeń nazw, więc
System.Configuration.dll
teoretycznie plik może mieć przestrzeń nazwSome.Random.Name
. Dla jasności / spójności są zwykle takie same, ale są wyjątki.źródło
Ok .. działało po ponownym uruchomieniu VSTS. Link zaproponował rozwiązanie tego samego problemu. Chciałbym móc to wcześniej zobaczyć. :)
źródło
Dodanie
System.Configuration
odniesienia do wszystkich projektów rozwiąże ten problem.Idź do
Project
->Add Reference
W wyświetlonym polu kliknij
All assemblies
kartę listy na liście po lewej stronie.Na środkowej liście przewiń
System.Configuration
i upewnij się, że pole jest zaznaczone.Kliknij ok, aby złożyć wniosek, a będziesz mógł uzyskać dostęp do
ConfigurationManager
zajęć.źródło
Dodanie tej odpowiedzi, ponieważ żadne z sugerowanych rozwiązań nie działa dla mnie.
źródło
Jeśli otrzymujesz wiele ostrzeżeń (w moim przypadku 64 w rozwiązaniu!) Jak
ponieważ aktualizujesz starszy projekt, możesz zaoszczędzić dużo czasu w następujący sposób:
System.Configuration
jako odniesienie do sekcji Referencje .Dodaj następujące dwie
using
instrukcje na górze każdego.cs
pliku class ( ):using System.Configuration; using ConfigurationSettings = System.Configuration.ConfigurationManager;
Przez tę zmianę wszystkie wystąpienia
będzie teraz odwoływał się do właściwego menedżera konfiguracji, a nie już przestarzałego, a wszystkie ostrzeżenia CS0618 znikną natychmiast.
Oczywiście należy pamiętać, że jest to szybki hack. W dłuższej perspektywie należy rozważyć refaktoryzację kodu.
źródło
Mam lepsze rozwiązanie tego problemu
configurationmanager does not exist in the current context
.Do odczytanego ciągu połączenia
web.config
musimy użyćConfigurationManager
klasy i jej metody. Jeśli chcesz użyć, musisz dodać przestrzeń nazw za pomocąSystem.Configuration
;Chociaż używałeś tej przestrzeni nazw, kiedy próbujesz użyć
ConfigurationManager
klasy, system wyświetla błąd „menedżer konfiguracji nie istnieje w bieżącym kontekście”. By rozwiązać ten problem:źródło
Czy na pewno dodano odwołanie do zestawu .NET, a nie coś innego? Usunęłbym twoją referencję, a następnie spróbuję dodać ją ponownie, upewniając się, że wybierasz z zakładki .NET w dialogu referencyjnym Visual Studio - najnowsza wersja powinna mieć 2.0.0.0 w GAC.
źródło
teraz możesz:
źródło
Aby sprawdzić poprawność, spróbuj utworzyć nowy projekt aplikacji sieci Web, otwórz kod z tyłu strony Default.aspx. Dodaj wiersz w Page_Load, aby uzyskać dostęp do ciągu połączenia.
Powinien mieć domyślnie dodaną System.Configuration jako odniesienie. Powinieneś również zobaczyć instrukcję using na górze pliku kodu.
Mój kod za plikiem wygląda teraz tak i kompiluje się bez problemów.
Zakłada się, że mam ciąg połączenia w moim pliku web.config o nazwie równej „MyConnectionStringName”, tak jak ...
Tak, to elementarne, wiem. Ale jeśli nie masz lepszych pomysłów, czasami warto sprawdzić coś naprawdę prostego, co powinno działać.
źródło
Po prostu zainstaluj
następnie użyj
źródło
Jeśli ten kod dotyczy osobnego projektu, na przykład projektu bibliotecznego. Nie zapomnij dodać odniesienia do pliku system.configuracja.
źródło
Ten błąd może również wystąpić, jeśli przez pomyłkę dodasz odwołanie do innego, niepowiązanego projektu. Sprawdź, czy dotyczy to Ciebie.
źródło
Aby rozwiązać ten problem, przejdź do Eksploratora rozwiązań. Kliknij odnośnik prawym przyciskiem myszy, kliknij Dodaj odnośnik i wybierz .net i znajdź system.configuracja, kliknij OK
źródło
Dodaj plik menedżera konfiguracji, aby połączyć się z bazą danych web.config
źródło