【问题标题】:What is the best way to manage settings (configuration) in ASP.NET 2.0?在 ASP.NET 2.0 中管理设置(配置)的最佳方式是什么?
【发布时间】:2009-03-27 17:18:30
【问题描述】:

我有一个项目,我们正在将一些功能从现有客户端扩展到 ASP.NET 2.0 中的 Web 门户。客户端是基于 Windows 窗体的(在 .NET 2.0 中)。它有一些设置保存在 Project > Properties > Settings.settings 系统中,包括生成的 settings.Designer.cs 文件。该文件为每个设置提供了很好的自动包装器。

在尝试建立网站时,我一直对这个功能明显缺乏平等感到沮丧。我有一个 web.config,它可以有一个部分。这意味着通过带有字符串的代码进行访问,例如:

WebConfigurationManager.AppSettings["mySetting"];

我什至可以通过这种方式让设置引用另一个文件,提供一点抽象,并且更容易签入源代码控制:

<appSettings configSource="web.settings.config"/>

但最终这缺少客户端项目设置系统的某些功能。

如果可能的话,我特别喜欢这些功能:

  • 自动生成的访问器类(为方便起见,intellisense..)
    • 方便
    • 强类型
    • 提供智能感知
    • 代码不会针对设置名称中的拼写错误/错误进行编译
  • 简单的界面
    • 之前的 settings.Settings 提供了一个不错的网格
    • 代表所有选项
    • 显示某些选项的下拉选项
    • 不必编辑 XML
    • 不能指尖括号

我知道可以创建一个包含这些内容的类,但它不会自动与设置保持同步,并且必须在任何更改时手动编辑。然而,它会提供上述的一些。

我可以像我们在客户端中那样获得与项目设置相同的功能吗?

管理 ASP.NET 2.0 网站设置的最佳方式是什么?

【问题讨论】:

    标签: c# asp.net settings


    【解决方案1】:

    您应该使用 Web 应用程序,而不是网站,并且您可以像 Windows 应用程序一样访问设置

    【讨论】:

    • 我不确定这是否适合我们,我是否对网站不走运?
    • 您并非完全不走运,但对于一个网站,您必须“手动”解析配置文件中的设置。
    【解决方案2】:

    默认情况下,使用 web.config 中的 appSettings 部分是管理 Web 应用程序设置的最简单方法。您可以根据需要在应用程序设置中转换值。但是,在这种情况下,您将失去强类型,这听起来像是破坏交易。

    如果您确实需要保留强类型,请进入项目设置(类似于 WinForms 应用程序)并在那里设置您的值。您会注意到 settings.settings 文件存在于 MyProjects 文件夹中,但您还会在 web.config 文件的底部找到以下代码 sn-p down(从我的一个应用程序中滑动):

    <applicationSettings>
       <EAF.My.MySettings>
          <setting name="EAF_AS400EmployeeServices_EmployeeServices" serializeAs="String">                                          
          <value>http://countynetappsdev/AS400DataService/EmployeeServices.asmx</value>
      </setting>
    </applicationSettings>
    

    请注意本节中的 serializeAs 属性。一旦掌握了本节中的内容,就可以使用 VB.NET 通过 My.Settings 库访问设置。但是,由于您使用的是 C#,因此您需要做更多的工作,但是可以在 here 找到一个简单的代码解决方案。

    【讨论】:

      【解决方案3】:

      我创建了包装我的 web.config 的类,以提供对设置的强类型、智能感知友好的访问。

      此外,支持人员在实施时最有可能在 XML 中更改设置,因此 VS 中的网格没有区别。当然,它不是自动生成的,但复制/粘贴是你的朋友:)

      【讨论】:

        猜你喜欢
        • 2011-05-06
        • 2014-06-01
        • 1970-01-01
        • 2010-09-13
        • 2015-06-29
        • 2022-12-12
        • 2023-03-25
        • 2021-06-29
        • 1970-01-01
        相关资源
        最近更新 更多