我需要在web.config或app.config中以分层格式存储我的应用程序配置设置。这可能吗?或者我必须将它存储在某个XML文件或数据库中并使用它?普通名称值对格式对我来说还不够。
<appSettings>
<Report1>
<add key="SourceFilePath" value="value1" />
<add key="DestinationFolderPath" value="value2" />
</Report1>
<Report2>
<add key="SourceFilePath" value="value1" />
<add key="DestinationFolderPath" value="value2" />
</Report2>
</appSettings>
这是一个基于Web的报告应用程序,我需要存储源文件,SSIS包,FTP服务器详细信息等的文件路径。
更新:如果我选择自定义配置部分选项,是否可以将设置存储在单独的文件中以保持主要web.config文件不受应用程序设置的影响?
答案 0 :(得分:6)
您无法将自定义元素添加到appSettings
。
实现自定义格式的最佳方法是编写自己的ConfigurationSettings
类并在配置中使用它。
这将允许您以强类型方式存储数据,并具有有意义的元素和属性名称。
请参阅MSDN上的How to: Create Custom Configuration Sections Using ConfigurationSection。
答案 1 :(得分:3)
你不能像你的建议那样做。
您可以做的是按键名称分组:
<appSettings>
<add key="Report1:SourceFilePath" value="value1" />
<add key="Report1:DestinationFolderPath" value="value2" />
<add key="Report2:SourceFilePath" value="value1" />
<add key="Report2:DestinationFolderPath" value="value2" />
</appSettings>
最好的方法是定义自己的 ConfigurationSection。
以下是关于此的一些链接:
答案 2 :(得分:3)
您无法以appsettings中建议的方式存储xml元素。 如果您需要层次结构,请尝试以下方法之一
将整个xml元素存储在appsettings中解析xml
<appSettings>
<add key="Report1" value="<Report1 SourceFilePath=""value1"" DestinationFolderPath=""value2"" />" />
<add key="Report2" value="<Report2 SourceFilePath=""value1"" DestinationFolderPath=""value2"" />" />
</appSettings>
将xml存储在config部分(参见上面的答案)
使用DslConfig项目。
使用NuGet添加它,然后添加AppSpike作为示例。
在您的情况下,您可以创建一个类ReportConfig并使用此类作为配置上课。
例如:
public class Report {
string SourceFilePath { get; set; }
string DesinationFolderPath { get; set; }
}
在Variables.var中创建配置文件条目
import ReportClassNamespace from ReportClassAssembly
Var["Report1"] = Report(SourceFilePath:"value1",DesinationFolderPath:"value2")
Var["Report2"] = Report(SourceFilePath:"value1",DesinationFolderPath:"value2")
答案 3 :(得分:0)
我知道的最佳方法是创建自己的“设置”类并对其进行序列化/设计,以便读取/编写您的应用。设置。
您也可以使用Admin。您网站的页面将所有设置保存到其中。
可能在你的情况下最好使用数据库来保存所有设置。