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

时间:2012-04-10 19:49:05

标签: c# web-config settings application-settings

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

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 - 如果缺少设置,我只会在运行时收到一个null对象。这似乎不太有利,因为我倾向于更喜欢编译过程中出现的错误,但它让我感到疑惑:这两个选项之间的区别是什么?我应该何时使用它们?

1 个答案:

答案 0 :(得分:0)

我认为答案主要包含在这个问题中:整个差异是基本的键值对模式与更复杂的模式。通过扩展,差异与弱类型与强类型以及运行时与编译时相关。一般情况下,后者更好,同样意义上.NET比Javascript“更好”:您会尽早收到错误警报,而不是让它们以不可预测和难以追踪的方式冒泡进入您的应用程序。强模式首选项的例外情况可能包括:

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