【问题标题】:AppSettings vs project-specific settings in Web.ConfigAppSettings 与 Web.Config 中的项目特定设置
【发布时间】:2012-04-10 19:49:05
【问题描述】:

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

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 ——如果设置丢失,我只会在运行时收到一个空对象。这似乎不太有利,因为我倾向于更喜欢编译期间出现的错误,但这让我想知道:这两个选项之间有什么区别以及我应该何时使用它们?

【问题讨论】:

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


【解决方案1】:

我认为答案主要包含在问题中:全部区别在于基本键值对模式与更复杂的模式。通过扩展,差异涉及弱类型与强类型,以及运行时与编译时。一般来说,后者更好,就像 .NET 比 Javascript “更好”一样:您会尽早收到错误警报,而不是让它们以不可预测和难以追踪的方式冒泡到您的应用程序中。强模式偏好的例外情况可能包括:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    相关资源
    最近更新 更多