是否可以在asp.net web.config文件中创建自己的自定义键并使用C#进行迭代?你是如何做到的(我在哪里放钥匙?什么格式?)?我有一个Intranet应用程序,它根据客户端的IP地址执行某些操作。我没想在代码隐藏文件中对它们进行硬编码,而是将它们放在web.config中并迭代它。这样我就可以在配置文件中添加或删除而无需重新编译所有内容。
我的密钥会有一个名称,IP地址,也许还有其他信息。
谢谢。
答案 0 :(得分:11)
我认为这应该为你做...
这是在你的web.config ...
<configSections>
<section name="DataBaseKeys" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</configSections>
<DataBaseKeys>
<!--Connection Strings for databases (or IP Addresses or whatever)-->
<add key="dbCon1" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
<add key="dbCon2" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
<add key="dbCon3" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
<add key="dbCon4" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
<add key="dbCon5" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
</DataBaseKeys>
这是你的代码......
using System.Configuration;
using System.Collections.Specialized;
protected void Page_Load(object sender, EventArgs e)
{
LoadDdls();
}
private void LoadDdls()
{
NameValueCollection nvcDbKeys = GetDbKeys();
//Loop through the collection
for (int i = 0; i < nvcDbKeys.Count; i++)
{
// "Keys" is the "key" - Get(int) is the "value"
this.DropDownList1.Items.Add(new ListItem(nvcDbKeys.Keys[i], nvcDbKeys.Get(i)));
}
}
private NameValueCollection GetDbKeys()
{
//Declare a name value collection to store Database Key List from web.config
NameValueCollection nvcDatabaseKeyList;
nvcDatabaseKeyList = (NameValueCollection) ConfigurationManager.GetSection("DataBaseKeys");
return nvcDatabaseKeyList;
}
答案 1 :(得分:2)
您可以创建Custom Configuration Section。这允许您将自己的自定义配置放在web.config中,并以您认为合适的方式访问它。
答案 2 :(得分:2)
快速解决方案:将您的密钥添加到appSettings,索引为postfix,即。 “key1”,“key2”等,并循环,直到你找到一个不存在的密钥。或者将分隔列表添加到单个键,即。 “值1;值2;值3; ......”。
更好的解决方案:创建自己的自定义部分处理程序,然后您可以在web.config的单独部分中以自己的方式添加数据。您需要在web.config的顶部定义section和sectiongroup,并引用section处理程序类。
<configuration>
<configSections>
<sectionGroup name="MySectionGroup">
<section name="MySection" type="[type and full assembly name]"/>
...
<MySectionGroup>
<MySection>
[some xml]
接下来创建部分处理程序类,它需要实现接口 IConfigurationSectionHandler ,它定义了 Create 方法。 Create 将sectionNode作为参数,这是一个XML节点,您可以以任何方式解析它。返回对象应包含您已解析的数据。要加载节处理程序,请写:
MySectionDataObject myData = ConfigurationManager.GetSection( "MySectionGroup/Section" ) as MySectionDataObject