[英]AppSettings get value from .config file
我無法訪問配置文件中的值。
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var clientsFilePath = config.AppSettings.Settings["ClientsFilePath"].Value;
// the second line gets a NullReferenceException
.config 文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- ... -->
<add key="ClientsFilePath" value="filepath"/>
<!-- ... -->
</appSettings>
</configuration>
你有什么建議我應該怎么做?
這對我有用:
string value = System.Configuration.ConfigurationManager.AppSettings[key];
dtsg給出的答案有效:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
但是,您需要添加一個程序集引用
系統配置
轉到解決方案資源管理器,然后右鍵單擊 “引用”,然后選擇“ 添加引用” 。 選擇組件選項卡並搜索配置 。
這是我的App.config的示例:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="AdminName" value="My Name"/>
<add key="AdminEMail" value="MyEMailAddress"/>
</appSettings>
</configuration>
您可以通過以下方式獲得:
string adminName = ConfigurationManager.AppSettings["AdminName"];
試試看:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
從配置讀取:
您需要添加對Config的引用
string value = Properties.Settings.Default.keyname;
保存到配置:
Properties.Settings.Default.keyName = value;
Properties.Settings.Default.Save();
我在用:
ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
//configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension";
configMap.ExeConfigFilename = AppDomain.CurrentDomain.BaseDirectory + ServiceConstants.FILE_SETTING;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
value1 = System.Configuration.ConfigurationManager.AppSettings["NewKey0"];
value2 = config.AppSettings.Settings["NewKey0"].Value;
value3 = ConfigurationManager.AppSettings["NewKey0"];
其中value1 = ...和value3 = ...給出null而value2 = ...起作用
然后,我決定將內部app.config替換為:
// Note works in service but not in wpf
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"d:\test\justAConfigFile.config.whateverYouLikeExtension");
ConfigurationManager.RefreshSection("appSettings");
string value = ConfigurationManager.AppSettings["NewKey0"];
使用VS2012 .net 4
在app/web.config
文件中,設置以下配置:
<configuration>
<appSettings>
<add key="NameForTheKey" value="ValueForThisKey" />
...
...
</appSettings>
...
...
</configuration>
然后您可以在代碼中輸入以下內容來訪問此代碼:
string myVar = System.Configuration.ConfigurationManager.AppSettings["NameForTheKey"];
*請注意,此功能適用於.net4.5.x
和.net4.6.x
; 但不適用於.net core
。 最好的問候:拉斐爾
很久以后又回來了...
鑒於ConfigurationManager的消亡,對於仍然在尋找這種嘗試答案的任何人(例如):
AppSettingsReader appsettingsreader = new AppSettingsReader();
string timeAsString = (string)(new AppSettingsReader().GetValue("Service.Instance.Trigger.Time", typeof(string)));
當然需要System.Configuration。
(將代碼編輯為實際可行且易於閱讀的內容)
看到我做了我認為顯而易見的事情是:
string filePath = ConfigurationManager.AppSettings.GetValues("ClientsFilePath").ToString();
在編譯時,它始終返回null。
但是,這(從上面)有效:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
某些答案似乎與IMO有點關系這是我大約在2016年采取的行動
<add key="ClientsFilePath" value="filepath"/>
確保引用了System.Configuration
。
問題是要求設置鍵的 值
哪個應該是
string yourKeyValue = ConfigurationManager.AppSettings["ClientsFilePath"]
//yourKeyValue should hold on the HEAP "filepath"
這是您可以將值分組在一起的一種方式(不適用於此問題)
var emails = ConfigurationManager.AppSettings[ConfigurationManager.AppSettings["Environment"] + "_Emails"];
emails
將為環境鍵+“ _Emails”的值
example : jack@google.com;thad@google.com;
對於Web應用程序,我通常會編寫此方法,並僅通過鍵調用它。
private String GetConfigValue(String key)
{
return System.Web.Configuration.WebConfigurationManager.AppSettings[key].ToString();
}
您可以簡單地輸入:
string filePath = Sysem.Configuration.ConfigurationManager.AppSettings[key.ToString()];
因為key
是一個對象,而AppSettings
需要一個字符串
ConfigurationManager.RefreshSection("appSettings")
string value = System.Configuration.ConfigurationManager.AppSettings[key];
按照此處其他答案的建議,我的簡單測試也失敗了,直到我意識到我添加到桌面應用程序的配置文件被命名為“ App1.config”。 我將其重命名為“ App.config”,一切立即按預期進行。
代碼將自動生成
<configuration> <configSections> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup ..." ... > <section name="XX....Properties.Settings" type="System.Configuration.ClientSettingsSection ..." ... /> </sectionGroup> </configSections> <applicationSettings> <XX....Properties.Settings> <setting name="name" serializeAs="String"> <value>value</value> </setting> <setting name="name2" serializeAs="String"> <value>value2</value> </setting> </XX....Properties.Settings> </applicationSettings> </configuration>
獲得價值
Properties.Settings.Default.Name
要么
Properties.Settings.Default [“名稱”]
或者您可以使用
string value = system.configuration.ConfigurationManager.AppSettings.Get("ClientsFilePath");
//Gets the values associated with the specified key from the System.Collections.Specialized.NameValueCollection
ConfigurationManager 已過時,需要在.NET Сore 環境中使用IConfiguration(IConfiguration 由.NET Core 內置依賴注入提供)。
private readonly IConfiguration config;
public MyConstructor(IConfiguration config)
{
this.config = config;
}
public void DoSomethingFunction()
{
string settings1 = config["Setting1"];
}
在我的情況下,我必須在 '@System.Configuration.ConfigurationManager.AppSettings["key"]' 的任一側拋出一個 ' 才能將其作為字符串讀入我的程序。 我正在使用 Javascript,所以這是在我的標簽中。 注意: ToString() 對我不起作用。
做這樣的事情:
string value1 = System.Configuration.ConfigurationManager.AppSettings.Get(0); //for the first key
string value2 = System.Configuration.ConfigurationManager.AppSettings.Get(1); //for the first key
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.