Web.Config中的AppSettings与项目特定设置的区别

3

好的,这个让我有点困惑。 我有以下内容:

string csvOfAttributes = CableSolve.Web.Properties.Settings.Default.GenerateBoothReportAttributes;

在我的web.config文件中:

<CableSolve.Web.Properties.Settings>
  <setting name="GenerateBoothReportAttributes" serializeAs="String">
    <value>327, 329, 330, 369, 342</value>
  </setting>
</CableSolve.Web.Properties.Settings>

我有两个关于这个问题的问题:
- 如果我从web.config文件中省略我的设置,我会收到编译错误。这怎么可能?Web.config是可编辑的;我只期望运行时错误。如果我编译我的应用程序、部署,然后用户编辑此设置的名称——那不会破坏已编译的代码吗? - 我可以将此设置存储在web.config文件的appConfig部分中。要访问值,我将通过ConfigurationManager进行访问——如果缺少该设置,我只会在运行时收到空对象。这似乎不太优越,因为我倾向于在编译期间出现错误,但这让我想知道:这两个选项之间的区别是什么,何时应该使用它们?

https://dev59.com/9XE95IYBdhLWcg3wWMdQ#7899056 - Mircea Ion
1个回答

0

我认为答案大部分都包含在问题中:整个区别在于基本的键值对模式与更复杂的模式。从延伸上来说,这个区别涉及到弱类型与强类型,以及运行时与编译时。一般来说,后者更好,就像.NET比Javascript更好一样:你可以早期发现错误,而不是让它们以不可预测和难以追踪的方式传播到你的应用程序中。对于强模式偏好的例外情况可能包括:

  • 您的应用程序需求正在演变,因此您不希望锁定一个模式
  • 您正在使用不同开发人员或应用程序将使用的根级配置
  • 您希望允许“无效”配置并在运行时处理它们

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接