Odczyt ustawień z aplikacji.config lub web.config in.net
Pracuję nad biblioteką klas C#, która musi być w stanie odczytać ustawienia z pliku web.config
lub app.config
(w zależności od tego, czy DLL jest odwołany z ASP.NET aplikacji webowej lub aplikacji Windows Forms).
I ' ve found that
ConfigurationSettings.AppSettings.Get("MySetting")
Działa, ale ten kod został oznaczony przez Microsoft jako przestarzały.
Przeczytałem, że powinienem używać:
ConfigurationManager.AppSettings["MySetting"]
Jednak System.Configuration.ConfigurationManager
klasa nie wydaje się być dostępna z projektu biblioteki klas C#.
Robi czy ktoś wie, jak najlepiej to zrobić?
20 answers
Musisz Dodać referencję do System.Configuration
w folderze referencje twojego projektu.
Zdecydowanie powinieneś używać ConfigurationManager
zamiast przestarzałego ConfigurationSettings
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-02 18:25:08
Dla Przykładowej Aplikacji.config jak poniżej:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="countoffiles" value="7" />
<add key="logfilelocation" value="abc.txt" />
</appSettings>
</configuration>
Możesz przeczytać powyższe ustawienia aplikacji za pomocą kodu pokazanego poniżej:
using System.Configuration;
Może być również konieczne dodanie odniesienia do systemu.Konfiguracja w projekcie, jeśli jeszcze go nie ma. Następnie możesz uzyskać dostęp do wartości w następujący sposób:
string configvalue1 = ConfigurationManager.AppSettings["countoffiles"];
string configvalue2 = ConfigurationManager.AppSettings["logfilelocation"];
Mam nadzieję, że to pomoże!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-27 09:18:50
Aktualizacja dla frameworka 4.5 i 4.6; następujące elementy nie będą już działać:
string keyvalue=System.Configuration.ConfigurationManager.AppSettings["keyname"];
Teraz uzyskaj dostęp do klasy ustawień poprzez Właściwości:
string keyvalue= Properties.Settings.Default.keyname;
Zobacz Zarządzanie ustawieniami aplikacji aby uzyskać więcej informacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-09 17:51:08
Kliknij prawym przyciskiem myszy na swojej bibliotece klas i wybierz z Menu opcję "Dodaj referencje", a na koniec z zakładki. NET wybierz System.Konfiguracja. Obejmowałoby to System.Konfiguracja dll w projekcie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-27 17:51:10
Używam tego i działa dobrze dla mnie
textBox1.Text = ConfigurationManager.AppSettings["Name"];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-30 23:24:05
Musisz dodać do projektu odniesienie do systemu.Montaż konfiguracji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-11 08:56:47
Możesz dodawać aplikację.plik konfiguracyjny do biblioteki DLL. App.Config działa tylko dla projektów wykonywalnych, ponieważ wszystkie biblioteki dll pobierają konfigurację z pliku konfiguracyjnego dla wykonywanego exe.
Załóżmy, że masz dwa projekty w swoim rozwiązaniu:
- SomeDll
- SomeExe
Twój problem może być spowodowany faktem, że dołączasz aplikację.config to SomeDLL a nie SomeExe. SomeDll jest w stanie odczytać konfigurację z SomeExe projekt.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-12 18:59:47
Odczyt Z Config:
Musisz dodać odniesienie do Config
- Otwórz "właściwości" w swoim projekcie
- przejdź do zakładki "Ustawienia"
- Dodaj "Nazwa" i "wartość"
-
Uzyskaj wartość za pomocą następującego kodu:
String value = Properties.Ustawienia.Default.keyname;
Zapisz do Config:
Properties.Settings.Default.keyName = value;
Properties.Settings.Default.Save();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-07 12:29:46
Miałem ten sam problem, po prostu przeczytaj je w ten sposób:
System.Configuration.ConfigurationSettings.AppSettings["MySetting"]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-03 09:39:29
Spróbuj tego:
string keyvalue=System.Configuration.ConfigurationManager.AppSettings["keyname"];
W sieci.config powinien być następną strukturą:
<configuration>
<appSettings>
<add key="keyname" value="keyvalue" />
</appSettings>
</configuration>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-16 06:12:56
web.config
jest używany z aplikacjami webowymi.web.config
domyślnie posiada kilka konfiguracji wymaganych dla aplikacji webowej. Możesz mieć web.config
dla każdego folderu w aplikacji internetowej.
app.config
jest używany w aplikacjach windows. Podczas budowania aplikacji w vs.net, zostanie automatycznie przemianowany na <appname>.exe.config
i ten plik musi zostać dostarczony wraz z Twoją aplikacją.
Możesz użyć tej samej metody do wywołania wartości app settings
z obu plików konfiguracyjnych:
System.Configuration.ConfigurationSettings.AppSettings["Key"]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-28 09:31:35
Zdecydowanie zalecam stworzenie wrappera dla tego połączenia. Coś w rodzaju ConfigurationReaderService
i użyj dependency injection, aby uzyskać tę klasę. W ten sposób będziesz mógł wyizolować te pliki konfiguracyjne do celów testowych.
Więc użyj ConfigurationManager.AppSettings["something"];
sugerowanej i zwróć tę wartość. Możesz za pomocą tej metody utworzyć jakiś domyślny zwrot, jeśli nie ma dostępnego klucza .plik konfiguracyjny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-18 19:19:11
Jak znalazłem najlepsze podejście do dostępu do zmiennych ustawień aplikacji w sposób systematyczny, tworząc klasę wrapper nad systemem.Konfiguracja jak poniżej
public class BaseConfiguration
{
protected static object GetAppSetting(Type expectedType, string key)
{
string value = ConfigurationManager.AppSettings.Get(key);
try
{
if (expectedType == typeof(int))
return int.Parse(value);
if (expectedType == typeof(string))
return value;
throw new Exception("Type not supported.");
}
catch (Exception ex)
{
throw new Exception(string.Format("Config key:{0} was expected to be of type {1} but was not.",
key, expectedType), ex);
}
}
}
Teraz możemy uzyskać dostęp do potrzebnych zmiennych ustawień za pomocą zakodowanych nazw za pomocą innej klasy jak poniżej
public class ConfigurationSettings:BaseConfiguration
{
#region App setting
public static string ApplicationName
{
get { return (string)GetAppSetting(typeof(string), "ApplicationName"); }
}
public static string MailBccAddress
{
get { return (string)GetAppSetting(typeof(string), "MailBccAddress"); }
}
public static string DefaultConnection
{
get { return (string)GetAppSetting(typeof(string), "DefaultConnection"); }
}
#endregion App setting
#region global setting
#endregion global setting
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-14 06:33:11
Możesz również użyć formo :
Config:
<appSettings>
<add key="RetryAttempts" value="5" />
<add key="ApplicationBuildDate" value="11/4/1999 6:23 AM" />
</appSettings>
Kod:
dynamic config = new Configuration();
var retryAttempts1 = config.RetryAttempts; // returns 5 as a string
var retryAttempts2 = config.RetryAttempts(10); // returns 5 if found in config, else 10
var retryAttempts3 = config.RetryAttempts(userInput, 10); // returns 5 if it exists in config, else userInput if not null, else 10
var appBuildDate = config.ApplicationBuildDate<DateTime>();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-18 20:58:46
Od kilku dni próbuję znaleźć rozwiązanie tego samego problemu. Udało mi się to rozwiązać, dodając klucz w tagu appsettings w Internecie.config. To powinno zastąpić .dll podczas korzystania z helpera.
<configuration>
<appSettings>
<add key="loginUrl" value="~/RedirectValue.cshtml" />
<add key="autoFormsAuthentication" value="false"/>
</appSettings>
</configuration>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-30 18:06:46
Zawsze tworzę interfejs IConfig z właściwościami typesafe zadeklarowanymi dla wszystkich wartości konfiguracyjnych. Klasa implementacji Config następnie owija wywołania do systemu.Konfiguracja. Cały Twój System.Wywołania konfiguracyjne są teraz w jednym miejscu o wiele łatwiejsze i czystsze w utrzymaniu i śledzeniu, które pola są używane i deklarowaniu ich wartości domyślnych. Piszę zestaw prywatnych metod pomocniczych do odczytu i analizy typowych danych.
Używając frameworka IoC możesz uzyskać dostęp do IConfig pola w dowolnym miejscu w aplikacji, po prostu przekazując interfejs do konstruktora klasy. Możesz także tworzyć przykładowe implementacje interfejsu IConfig w testach jednostkowych, dzięki czemu możesz teraz testować różne wartości konfiguracyjne i kombinacje wartości bez potrzeby dotykania aplikacji.config lub Web.plik konfiguracyjny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-10 23:29:07
Tylko dla kompletności, jest jeszcze jedna opcja dostępna tylko dla projektów internetowych:
System.Web.Configuration.WebConfigurationManager.AppSettings["MySetting"]
Zaletą tego jest to, że nie wymaga dodatkowego odniesienia do dodania, więc może być lepsze dla niektórych osób.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-16 11:59:27
Inne możliwe rozwiązanie:
var MyReader = new System.Configuration.AppSettingsReader();
string keyvalue = MyReader.GetValue("keyalue",typeof(string)).ToString();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-30 15:15:19
Pls sprawdzić wersję. NET pracujesz. Powinna być wyższa niż 4. I trzeba dodać System.Konfiguracja biblioteki systemowej do Twojej aplikacji
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-23 04:46:40
Dla ex:
<applicationSettings>
<MyApp.My.MySettings>
<setting name="Printer" serializeAs="String">
<value>1234 </value>
</setting>
</MyApp.My.MySettings>
</applicationSettings>
Dim strPrinterName as string= My.settings.Printer
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-09 23:23:55