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

发布于 2024-12-24 23:19:30 字数 667 浏览 0 评论 0 原文

我需要在 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 文件从应用程序设置中保持干净?

I need to store my application config settings in a hierarchical format in web.config or app.config. Is this possible? or I have to store it in some XML file or database and use it instead? plain name value pair format isn't enough for me.

    <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>

It is a web-based reporting application and I need to store the file paths for the source files, SSIS packages, FTP server details etc.

Update: If I choose the custom config section option, can I store the settings in a separate file to keep the main web.config file clean from app settings?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

苍景流年 2024-12-31 23:19:30

您无法将自定义元素添加到 appSettings

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

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

请参阅 MSDN 上的如何:使用 ConfigurationSection 创建自定义配置部分

You can't add custom elements to appSettings.

The best way to achieve a custom format it to write your own ConfigurationSettings class and use that in configuration.

This will allow you to store data in a strongly typed way as well as have meaningful element and attribute names.

See How to: Create Custom Configuration Sections Using ConfigurationSection on MSDN.

记忆里有你的影子 2024-12-31 23:19:30

你不能按照你的建议那样做。

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

<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。

以下是有关此内容的一些链接:

You can't do that as you suggest.

What you can do is to group by the key name the elements:

<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>

The best way though would be to define your own ConfigurationSection.

Here's some links about this:

画中仙 2024-12-31 23:19:30

您无法按照您在应用程序设置中建议的方式存储 xml 元素。
如果您需要如上所述的层次结构,请尝试以下方法之一

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

    ;
      " >>
      " >>
    
    
  2. 将 xml 存储在配置部分(参见上面的答案)

  3. 使用 DslConfig 项目。
    使用 NuGet 添加它,然后添加 AppSpike示例。
    在您的情况下,您可以创建一个类 ReportConfig 并将此类用作配置类。
    示例:

    公共类报告{
      字符串 SourceFilePath { 获取;放; }
      字符串目标文件夹路径{获取;放; }
    }
    

在 Variables.var 中创建一个配置文件条目

   import ReportClassNamespace from ReportClassAssembly

   Var["Report1"] = Report(SourceFilePath:"value1",DesinationFolderPath:"value2")
   Var["Report2"] = Report(SourceFilePath:"value1",DesinationFolderPath:"value2")
  1. 尝试 NConfig 项目

You can't store xml elements they way you suggested in appsettings.
If you need a hierarchy as you mentioned try one of the following approaches

  1. Store whole xml elements in appsettings an parse the xml

    <appSettings>
      <add key="Report1" value="<Report1 SourceFilePath=""value1"" DestinationFolderPath=""value2"" />" />
      <add key="Report2" value="<Report2 SourceFilePath=""value1"" DestinationFolderPath=""value2"" />" />
    </appSettings>
    
  2. Store the xml in config section (see answers above)

  3. Use the DslConfig project.
    Add it with NuGet and look add the AppSpike for examples.
    In your case you could create a class ReportConfig and use this class as configuration class.
    Example:

    public class Report {
      string SourceFilePath { get; set; }
      string DesinationFolderPath { get; set; }
    }
    

Create a config File entry in Variables.var

   import ReportClassNamespace from ReportClassAssembly

   Var["Report1"] = Report(SourceFilePath:"value1",DesinationFolderPath:"value2")
   Var["Report2"] = Report(SourceFilePath:"value1",DesinationFolderPath:"value2")
  1. Try the NConfig project
羅雙樹 2024-12-31 23:19:30

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

您也可以使用管理员。您网站的页面以将所有设置保存到其中。

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

The best approach I know is to create your own Settings class and serialize/desiarilze it in order to read/write your app. settings.

Also you can use Admin. page of your website to save all settings into it.

May be in your case is better to use a database to keep all settings there as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文