2

我有一个项目,我们正在将一些功能从现有客户端扩展到 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"/>

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

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

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

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

我可以像我们在客户中所做的那样与项目设置保持一致吗?

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

4

3 回答 3

1

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

于 2009-03-27T17:33:32.073 回答
0

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

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

<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#,因此您需要做更多的工作,但可以在此处找到一个简单的代码解决方案。

于 2009-03-27T17:55:18.090 回答
0

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

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

于 2009-03-27T17:59:03.027 回答