VS 2010 和 .NET 4.0 系列之《干净的Web.Config文件 》篇
系列文章导航:
VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改进 》篇
VS 2010 和 .NET 4.0 系列之《干净的Web.Config文件 》篇
VS 2010 和 .NET 4.0 系列之《起始项目模板》篇
VS 2010 和 .NET 4.0 系列之《多定向支持》篇
VS 2010 和 .NET 4.0 系列之《多显示器支持》篇
VS 2010 和 .NET 4.0 系列之《代码优化的Web开发Profile》篇
VS 2010 和 .NET 4.0 系列之《ASP.NET, HTML, JavaScript 代码片段支持》篇
VS 2010 和 .NET 4.0 系列之《自动启动ASP.NET应用》篇
VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中实现URL导向》篇
VS 2010 和 .NET 4.0 系列之《在VS 2010中查询和导航代码》篇
VS 2010 和 .NET 4.0 系列之《VS 2010代码智能提示的改进》篇
VS 2010 和 .NET 4.0 系列之《添加引用对话框的改进》篇
VS 2010 和 .NET 4.0 系列之《内置图表控件》篇
这是我针对即将发布的VS 2010 和 .NET 4所撰写的贴子系列的第一篇。
无可否认,今天的贴子所涉及的东西在ASP.NET 4.0中是个非常小的(但我还是认为是个非常棒的)变动:干净,简洁的web.config文件。
第一次在Visual Studio 2010中使用 文件->新项目 创建空白的ASP.NET 4.0 Web应用时你就会看到这个改进,所以我觉得把这个东西做为我的系列的第一篇是非常恰当的。
.NET 3.0 和 3.5中的Web.config文件
在最近几个版本中,新ASP.NET项目中的web.config文件的大小一直在稳步增长。例如,Visual Studio 2008 SP1中加到新的web项目中的默认web.config文件已有126行,所含的东西包罗万象,从标识的定义到用于ASP.NET HTTP管道中的处理器和模块的定义等等。
这个文件大小的增加是因为.NET 3.0 和 .NET 3.5用的是跟.NET 2.0一样的CLR和machine.config配置文件,只不过是在安装时加了或更新了框架中的程序集而已。为避免意外地覆盖机器上原有的2.0 machine.config中定制设置的风险,我们没有在其中注册随.NET 3.0 和 .NET 3.5版本而来的新的ASP.NET功能带来的标识定义和处理器和模块,而是选择让新的项目在应用的局部web.config中注册这些设置。这个做法比较安全,但也导致了web.config文件大小的增加,而且变到愈加复杂,读起来也更困难。
.NET 4中的Web.config文件
.NET 4 包括了一个新的CLR版本,以及特定于.NET 4的新的machine.config文件(是与.NET 2, .NET 3 和 .NET 3.5中所用的machine.config文件并列安装的)。
新的.NET 4 machine.config文件现在自动注册我们几年来添加的所有的ASP.NET 标识部分(section), 处理器和模块,包括了对应于下列功能的设置:
- ASP.NET AJAX
- ASP.NET 动态数据
- ASP.NET 路径选择或导向(现在可为ASP.NET WebForms和ASP.NET MVC两者兼用)
- ASP.NET 图表控件(现在内置于ASP.NET V4中了)
这意味着,在VS 2010中创建新的空白ASP.NET应用项目时,你会发现新的应用级默认web.config文件既干净又简洁:
上面的第一个配置部分告诉ASP.NET默认允许应用调试,并向Visual Studio指定在提供intellisense时该定向的.NET版本(VS 2010支持多定向,IDE中的intellisense会根据你当前针对的框架版本自动改变)。
第二个配置部分表示在IIS7中运行ASP.NET应用时是否使用“integrated(集成)”模式,该模式控制了是否对应用中的所有请求或者只是针对特定于ASP.NET的URL才运行ASP.NET HttpModules模块。我们在新应用的应用级web.config文件默认启用这个模式,因为,为兼容的原因,注册在机器级的默认IIS7设置是只对特定于ASP.NET的URL才运行模块,并不是对所有的请求。
结束语
.NET 4中简化了的web.config文件,其变动貌似细小,但我还是认为非常之棒,在你创建新的ASP.NET应用时将使得其默认体验更加干净,也更为容易理解。
在以后的贴子里,我将深入探讨ASP.NET 4中许多更加实质性的改进(以及若干个“细小但很棒”的调整)。
希望本文对你有所帮助,
Scott