[英]Struggling to read value from web.config file using ConfigurationManager.AppSettings[“key”] in ASP .NET
[英]Reading a key from the Web.Config using ConfigurationManager
我正在嘗試從與 web 層不同的層中的Web.config
文件中讀取密鑰(相同的解決方案)
這是我正在嘗試的:
string userName = System.Configuration.ConfigurationManager.AppSettings["PFUserName"];
string password = System.Configuration.ConfigurationManager.AppSettings["PFPassWord"];
這是我在Web.config
文件中的appSettings
:
<configuration>
....
<appSettings>
<add key="PFUserName" value="myusername"/>
<add key="PFPassWord" value="mypassword"/>
</appSettings>
....
</configuration>
當我調試代碼時, username
和password
只是null
,所以它沒有得到鍵的值。
讀取這些值我做錯了什么?
嘗試改用 WebConfigurationManager 類。 例如:
string userName = WebConfigurationManager.AppSettings["PFUserName"]
var url = ConfigurationManager.AppSettings["ServiceProviderUrl"];
我發現這個解決方案非常有幫助。 它使用 C# 4.0 DynamicObject 來包裝 ConfigurationManager。 因此,不要像這樣訪問值:
WebConfigurationManager.AppSettings["PFUserName"]
您可以將它們作為屬性訪問:
dynamic appSettings = new AppSettingsWrapper();
Console.WriteLine(appSettings.PFUserName);
編輯:添加代碼片段以防鏈接失效:
public class AppSettingsWrapper : DynamicObject
{
private NameValueCollection _items;
public AppSettingsWrapper()
{
_items = ConfigurationManager.AppSettings;
}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = _items[binder.Name];
return result != null;
}
}
如果調用者是另一個項目,您應該在調用者項目中編寫配置而不是被調用者。
它的完整路徑是
System.Configuration.ConfigurationManager.AppSettings["KeyName"]
將有兩個 Web.config 文件。 我想您可能對這兩個文件感到困惑。
檢查此圖像:
在此圖像中,您可以看到兩個 Web.config 文件。 您應該將常量添加到項目文件夾中而不是視圖文件夾中的常量
希望這可以幫助你
如果另一個項目正在使用此項目,則會發生此問題。 確保將應用設置鍵復制到父項目的 app.config 或 web.config。
您也可以嘗試使用這一行從app.config
文件中獲取字符串值。
var strName= ConfigurationManager.AppSettings["stringName"];
假設 .config 文件中的以下設置:
<configuration>
<appSettings>
<add key="PFUserName" value="myusername"/>
<add key="PFPassWord" value="mypassword"/>
</appSettings>
</configuration>
試試這個:
public class myController : Controller
{
NameValueCollection myKeys = ConfigurationManager.AppSettings;
public void MyMethod()
{
var myUsername = myKeys["PFUserName"];
var myPassword = myKeys["PFPassWord"];
}
}
對不起,我沒有測試過這個,但我認為它是這樣完成的:
var filemap = new System.Configuration.ExeConfigurationFileMap();
System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(filemap, System.Configuration.ConfigurationUserLevel.None);
//usage: config.AppSettings["xxx"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.