简体   繁体   中英

ASP.NET MVC 5 web.config <system.web> compilation & httpRuntime error

When I deploy my mvc application to my IIS 7 server it has the following in the web.config file:

  <system.web>
    <compilation targetFramework="4.5.1" />
    <httpRuntime targetFramework="4.5.1" />
  </system.web>

Having the compilation & httpRuntime tags in give me the following error:

Parser Error Message: The 'targetFramework' attribute in the element of the Web.config file is used only to target version 4.0 and later of the .NET Framework (for example, ''). The 'targetFramework' attribute currently references a version that is later than the installed version of the .NET Framework. Specify a valid target version of the .NET Framework, or install the required version of the .NET Framework.

So just for giggles I removed the compilation & httpRuntime tags and then the sites works perfectly! The server has 4.5.1 on it. I'm guessing this is something about the application pool, but it looks like the only options in the application pool are: No Managed Code, .NET Framework v2.0, .Net Framework v4.0. There isn't an option for v4.5 or v4.5.1. Right now it's set to v4.0.

I didn't really understand what compilation and httpRuntime are used for and why they are even in my web.config as I didn't explicitly place them there.

There are two ways Microsoft updates .NET Framework:

  • Side by Side Release, just like v1.1, 2.0, 4
  • Enhancement, just like 3, 3.5, 4.5

That means when you install .NET 4.5 the v4.0 folder is just updated to contain the .NET 4.5 files.

IIS only shows the Side by Side releases , not the enhancements. Since 4.5 is an enhancement, it is applied to the framework folder of v4.0. Thats also explains why you only see .NET Framework v2.0 and .Net Framework v4.0 as options under IIS application pool.

As for the targetFramework attribute, its is only recognized for framework 4.0, not prior.

The targetFramework attribute has two effects:

  • It controls the Common Language Runtime's quirks mode behavior
  • It works as a shortcut that allows the ASP.NET runtime to infer a wide array of configuration settings

Removing the attributes did solve your issue, but it is not the healthiest thing to do. I think you should check the server's registry for which framework updates are installed on the server, check if the website is also configured to work for framework 4.

您只需要在IIS 7.5服务器中将.NET框架升级到版本4.5,使用服务器上的Microsoft Web安装程序软件执行搜索.NET,然后安装.NET框架版本4.5以及所有应用程序目标该版本将起作用

my problem was that the >NET version for me site defaulted to 2.0 when setting up the site. Changed it to 4.0 and site works

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM