无法识别的属性“ targetFramework”。请注意,属性名称区分大小写


416

我正在尝试加载我的网站,并收到以下错误消息:

无法识别的属性“ targetFramework”。请注意,属性名称区分大小写。

<compilation debug="true" targetFramework="4.0">

该站点在我的本地PC上运行良好,但是在将其加载到主机并尝试在线查看时无法打开。


它不显示哪个文件包含该文件或在哪里?
乔恩·斯基特

2
它以前是在pre 4.0框架上构建的吗?elegantcode.com/2009/11/10/...
TA01

此问题可以通过4.0.3解决。 您可以在此处查看知识库文章。 @我,让我知道这是否可以解决您的问题,我可能会尝试针对此错误获得规范的问题/答案,并避免重复。谢谢。

当我尝试在Win 7 x64上安装KB2599651(64位下载)时,出现错误消息,提示“它不适用或被计算机上的其他情况阻止”。我有与OP相同的错误,已经安装了Framework 4.0并在IIS中注册了它,并选择了它作为应用程序池。
蒂姆(Tim)

您是否在比项目开发时更早的Visual Studio版本中打开?还是在Webmatrix中开发,然后在较旧的视觉工作室中打开?
ruffrey

Answers:


610

当您targetFramework="4.0"在web.config中具有属性,但应用程序池设置为运行ASP.NET 2.0 时,通常会发生这种情况。该targetFramework属性是ASP.NET 2.0完全无法识别的-因此将其更改为2.0不会产生预期的效果。

请与支持/管理员联系,并将AppPool切换到4.0。

您也可以完全删除该属性,但是,如果您的网站是使用4.0框架编码的,那么我敢肯定,其他因素也会导致错误。


20
谢谢,这个问题解决了,一步的指导检查此链接为一个步骤,让您的应用程序池切换到4.0:stackoverflow.com/questions/4890245/...
user1010572

谢谢@ vcsjones..my的网站现在正是因为您才开始运行.. :)
Shiva Pareek 2013年

仅添加到@vcsjones解决方案中,也可能会错过.net 4.0的注册。您可以使用此链接中的过程进行.net 4.0注册,然后需要将应用程序池更改为4.0。
2013年

4
当我搜索错误消息时,我发现了这个页面,上面有这个漂亮的问题,甚至是一个更漂亮的答案,我几个月前才提出要。
Memet Olsen 2014年

81

在IIS中注册框架对我有用:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -i

7
这可行!for 64bit在C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319下
Jerry Liang

1
我遇到了同样的问题,但是regiis并没有解决它-我不得不删除并重新创建整个网站树,并为每个应用程序重新分配池,现在它可以工作了……
veljkoz 2012年

1
如果这是IIS的新版本(没有其他站点在其上运行),或者您不担心托管站点因框架更改而中断,则可以在注册时使用-i而不是-ir。
拉姆

43

打开您的IIS(在运行中键入inetmgr)并更改您的应用程序池设置,要放大该图像,请右键单击“图像”并在新选项卡中打开图像 在此处输入图片说明



26

在Visual Studio菜单中:

网站->开始选项->生成选项卡->在下拉框中选择目标框架(.NET FrameWork 4)


或在我的情况下为4.5 :)
user230910 2014年

如果服务器只有2.0,该怎么办?应该安装4.0 / 4.5吗?
朱兰

@ user230910那是哪里?
DiegoS

我记不清楚了,但是我认为这是指IIS
user230910

对我来说工作非常完美,2019
Doug Null,

12

发布第一个Web服务时,我遇到了同样的问题。我通过执行以下操作解决了它:

  1. 打开IIS

  2. 单击应用程序池

  3. 右键单击DefaultAppPool =>设置应用程序池默认=>将.Net版本更改为V 4.0。(您也可以专门更改应用程序的.Net Framework版本)

希望,它将成功。


9

对于IIS 7,请根据给定的图片尝试...如果对您有用,请标记为我有用。

在此处输入图片说明


8

我必须在IIS中注册ASP.Net才能在Windows Server 2008 R2中解决它。下面附带的命令一览

cd /d C:\Windows\Microsoft.NET\Framework\v4.0.30319

iisreset /stop

aspnet_regiis -i

iisreset /start

%systemroot%\system32\inetsrv\appcmd set config /section:isapiCgiRestriction /[path='%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'].allowed:True 

%systemroot%\system32\inetsrv\appcmd set config /section:isapiCgiRestriction /[path='%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'].allowed:True 

在此处输入图片说明


5

将应用程序池更改为目标Framework 4.0而不是classic。

  1. RC网站->管理网站->高级设置>
  2. 第一种选择是从经典更改为集成的框架4。

5

我使用的是IIS Express,而不是IIS。

问题出在位于以下位置的applicationhost.config文件中:{solution_folder} \。vs \ config \ applicationhost.config。

应用程序池条目之一的ManagedRuntimeVersion值为“ v2.0”。我将其更改为“ v4.0”,并且可以正常工作。

我相当确定根本原因是我最近安装的NuGet软件包之一。

    <system.applicationHost>
       <applicationPools>
          <add name="BadAppPool1" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
       </applicationPools>
    </system.applicationHost>

2
尼斯-每个帖子都提到IIS。我正在使用IIS Express。解决问题的方法
-PhillyNJ

4

打开项目 ->按Shift + F4(打开属性页)->选择构建 ->在目标框架中选择.NET Framework 4- >确定



2

若要解决此问题,只需单击“控制面板”的“站点工具”部分中的“ ASP.NET版本”图标,即可将框架切换到4.0。


2

我从失败的MSBuild编译中遇到了此错误,该项目文件是从VS的早期版本转换为VS2010和.NET 4.0的项目文件。它实际上是一个Web部署项目,而对我有用的解决方案是在MSBuild文件开始的PropertyGroup部分中添加以下条目:

<ProductVersion>10.0.11107</ProductVersion>

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

在VS2010中转换其他类型的项目时,这些文件可能会自动更新,但是在转换后,它们在我的Web部署项目文件中丢失了。


2

我所做的:我确实将“应用程序池”的值从以前的值更改为DefaultAppPool。您可以在高级设置(网站->管理网站->高级设置>中执行此操作。


2

在本地运行指向.Net Framework 4.7.1的应用程序时,我也遇到了相同的问题。该错误是“ 无法识别的属性TargetFrameWork ”,如下所示。 在此处输入图片说明

但是上述答案都没有帮助我。最后,当我将当前端口(1413)的更改为其他值(60179)时,如下所示,它对我来说很好用,但是我不确定其背后的实际原因,但它确实起作用了。

在此处输入图片说明


我只是在验证自己是否有这个确切的错误,并且尝试按照此答案中的说明简单地更改端口。我正在运行WCF测试客户端以在localhost上启动此服务。更改端口号后,该服务即可启动。谢谢你的建议。
埃文(Evan)

在尝试了所有建议之后,仅此一项解决了我的问题。非常感谢。
Prabo

您的欢迎@Prabo如果可能的话请帮我UP投票
Rinoy阿育王

@Evan的欢迎词,如果可能的话,请帮助我进行投票
Rinoy Ashokan

1

刚在VS 2010中有过。

通过编辑.sln文件并更改TargetFrameworkMoniker为其分配值“ .NETFramework,Version%3Dv4.0”,此问题已得到修复


0

如果您编译文件,并且将“ targetFramework”的值设置为特定版本,即4.0,

确保主机正在运行与所述相同版本的.net框架。

如果没有,请下载.net框架。

下载后,如果不是在IIS管理器中自动将其设置为使用新下载的.net Framework版本的扩展名,

通过通过IIS管理器进入最近下载的.net框架的文件夹,手动添加扩展名:

1.右键单击网站文件夹

2.转到“属性”

3.在“虚拟目录”下,单击“配置”

4.将扩展名“ .aspx”的可执行路径(其中的路径指向最近下载的.net框架版本以外的版本)编辑为正确的路径,该路径是.net框架的最新下载版本的文件夹然后选择“ aspnet_isapi.dll”文件。

5.单击确定!



0

请遵循以下两个步骤:

注册.net Framework版本4.0(如果未注册)

  1. C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis -i

  2. 在应用程序池中,将.net框架更改为v4.0


0

如果在安装.Net FrameWork之后安装IIS。您需要再次为IIS安装.net框架。所以我们要做的就是运行aspnet_regiis -i。希望对您有所帮助。


0

在构建服务器上Jenkins的“控制台输出”页面中看到错误“无法识别的属性'targetFramework'”。这是在我将多个项目的“目标框架”从“ .NET Framework 3.5”更改为“ .NET Framework 4”并提交我的更改之后的。

在Jenkins中,必须更改项目设置。对于该解决方案,“ MSBuild版本”必须从“ v3.5”更改为“ v4.0”。


0

刚刚在将新应用程序部署到旧的IIS盒时遇到了这个问题。调查导致安装了v4.5.1运行时,但该应用需要v4.5.2

除了安装正确版本的ASP .Net运行时外,什么都不需要。


0

可能是您拥有自己的MSBUILD proj文件并且正在使用该<AspNetCompiler>任务。在这种情况下,您应该添加ToolPath.NET4。

<AspNetCompiler
    VirtualPath="/MyFacade"
    PhysicalPath="$(MSBuildProjectDirectory)\MyFacade\"
    TargetPath="$(MSBuildProjectDirectory)\Release\MyFacade"
    Updateable="true"
    Force="true"
    Debug="false"
    Clean="true"
    ToolPath="C:\Windows\Microsoft.NET\Framework\v4.0.30319\">      
</AspNetCompiler>

0

对于分层,只需在web.config文件中更改targetFramework的版本,其他无需更改。


0

我遇到了同样的问题,我发现这个不错的poweshell脚本可以同时更新所有应用程序池: https

确保将$IISAppPoolDotNetVersion = "v4.0"变量设置在顶部。


0

以下2个步骤将强制刷新Visual Studio和IIS Express缓存,通常可以解决我的类似问题:

  1. 只需将Project Framework从4+切换到.Net Framework 3.5并运行它
  2. 如果运行成功,您可以将其恢复为所需的4个以上目标框架,并发现它可能会再次运行。

0

更改本地开发的端口号对我有帮助,谢谢@Rinay Ashokan。我已经排除了所有麻烦,最后发现项目配置存储在IIS Express中,表示端口号。 在此处输入图片说明


-1

对于任何在开发人员PC上没有运行IIS的人,这就是我发生的事情:我有一个网站,改写了diff网站上的文件,该文件是4,前一个是3.5。得到这个错误。只需更改网站的目录名称即可修复它,在开发PC上可以是任何名称,因此没有问题。可以肯定地说,以上内容可能更优雅,但是有时候,如果您可以摆脱它,可以做一些简单的工作,即您是开发人员而不是QA或Prod。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.