将分层应用程序设置存储在web.config或app.config中

本文关键字:config app web 分层 应用程序 设置 存储 | 更新日期: 2023-09-27 18:19:37

我需要将应用程序配置设置以分层格式存储在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文件与应用程序设置之间的清洁吗?

将分层应用程序设置存储在web.config或app.config中

不能向appSettings添加自定义元素。

实现自定义格式的最佳方法是编写自己的ConfigurationSettings类并在配置中使用它。

这将允许您以强类型的方式存储数据,并具有有意义的元素和属性名称。

请参阅MSDN上的"如何:使用ConfigurationSection创建自定义配置节"。

你不能按照你的建议去做。

你可以做的是按关键字名称对元素进行分组:

<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

这里有一些链接:

  • 如何:使用ConfigurationSection创建自定义配置节
  • 3个简单步骤中的自定义配置部分
  • 在ASP.NET中创建自定义配置节

您不能按照您在appsettings中建议的方式存储xml元素。如果你需要你提到的层次结构,请尝试以下方法之一

  1. 将整个xml元素存储在appsettings中并解析xml

    <appSettings>
      <add key="Report1" value="<Report1 SourceFilePath=""value1"" DestinationFolderPath=""value2"" />" />
      <add key="Report2" value="<Report2 SourceFilePath=""value1"" DestinationFolderPath=""value2"" />" />
    </appSettings>
    
  2. 将xml存储在配置部分(请参阅上面的答案)

  3. 使用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")
  1. 尝试NConfig项目

我知道的最好的方法是创建自己的Settings类并对其进行序列化/设计,以便读取/编写应用程序。设置。

您也可以使用Admin。页面,将所有设置保存到其中。

在您的情况下,最好使用数据库来保存所有设置。