好吧,这个让我有些困惑。我有以下内容:

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

最佳答案

我认为答案主要包含在该问题中:整个区别在于基本键值对架构与更复杂的架构。通过扩展,区别涉及弱类型与强类型,以及运行时与编译时。总的来说,后者要好一些,从某种意义上讲,.NET比Java脚本“更好”:您会比以前更早地收到有关错误的警报,而不是使它们以无法预测且难以追踪的方式渗入应用程序中。强模式首选项的例外可能包括:


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

关于c# - Web.Config中的AppSettings与项目特定的设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10095423/

10-17 02:23