使用ASP.NET MVC4的出现一个问题,S0234: 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?),具体信息如下图所示:
经查询,将Areas/Views下的Web.config文件中删除
<add namespace="System.Web.Optimization"/>
将上面的话删除,问题就会解决。
虽然使用ASP.NET MVC,但是没有认真了解,解决方案中,会有多个web.config文件,对不同文件的作用进行整理
1、解决方案下的web.config
是整个解决方案的配置信息。包含三部分的内容:.NET的配置(例如:appSettings等);ASP.NET的配置(例如:syste.web的配置);部署服务器的配置信息(例如:system.webServer)等
2、Views文件下的web.config、Areas下的web.config
在views和areas文件夹下的配置文件,主要是配置本View下的相关信息,例如视图引擎的配置system.web.webPages.razor等,一般情况下无需修改这些配置文件。
ASP.NET MVC中各个config文件的配置原理及相关事项
解决方案的配置文件是一个整体的配置,而View及areas下面的主要是针对view的配置
在服务器端,所有部署到同一台服务器上的应用,共用一个machine.config,这个配置文件的所有的配置均会被继承至所有的应用中
而每一个应用的配置文件为web.config,其路径与machine.config的相同。
实际上一个服务器上会有多个配置文件,名称及解释如下图所示:
1、配置文件中可通过属性设定,限制该属性是否可被重写。
2、当服务器初次收到请求后,就对虚拟路径上的所有配置文件进行解读,并保存至缓存区。ASP.NET 会根据配置文件的改变而改变缓存区的内容。因此,到再次收到请求后,ASP.NET会直接使用缓存去寻找请求的资源。
3、当配置文件发生变化时,或配置文件中使用configSource属性的所引用的文件发生变化时,应用程序会自动重启。但是,也有例外,若使用了restartOnExternalChanges="false",则发生变化时,应用程序不会重启。