ASP.NET MVC 5 web.config <system.web>编译和httpRuntime错误

use*_*521 5 c# asp.net-mvc web-config

当我将我的mvc应用程序部署到我的IIS 7服务器时,它在web.config文件中有以下内容:

  <system.web>
    <compilation targetFramework="4.5.1" />
    <httpRuntime targetFramework="4.5.1" />
  </system.web>
Run Code Online (Sandbox Code Playgroud)

有编译和httpRuntime标签给我以下错误:

分析器错误消息:Web.config文件元素中的"targetFramework"属性仅用于目标4.0版及更高版本的.NET Framework(例如,'')."targetFramework"属性当前引用的版本晚于安装的.NET Framework版本.指定.NET Framework的有效目标版本,或安装所需的.NET Framework版本.

所以只是为了咯咯笑,我删除了编译和httpRuntime标签,然后网站工作完美!服务器上有4.5.1.我猜这是关于应用程序池的东西,但看起来应用程序池中的唯一选项是:No Managed Code,.NET Framework v2.0,.Net Framework v4.0.v4.5或v4.5.1没有选项.现在它被设置为v4.0.

我真的不明白编译和httpRuntime用于什么以及为什么它们甚至在我的web.config中,因为我没有明确地将它们放在那里.

str*_*oul 6

Microsoft更新.NET Framework有两种方法:

  • 并排释放,就像v1.1,2.0,4一样
  • 增强,就像3,3.5,4.5

这意味着当您安装.NET 4.5时,v4.0文件夹刚刚更新为包含.NET 4.5文件.

IIS仅显示并排版本,而不是增强功能.由于4.5是增强功能,因此它适用于v4.0的framework文件夹.这也解释了为什么您只在IIS应用程序池中看到.NET Framework v2.0和.Net Framework v4.0作为选项.

至于targetFramework属性,它仅在框架4.0中被识别,而不是先前的.

targetFramework属性有两个效果:

  • 它控制公共语言运行时的怪癖模式行为
  • 它作为一种快捷方式,允许ASP.NET运行时推断出各种配置设置

删除属性确实解决了您的问题,但这不是最健康的事情.我认为你应该检查服务器的注册表,了解服务器上安装了哪些框架更新,检查网站是否也配置为适用于框架4.