我刚刚将一个网站上传到我的服务器。它在本地完美运行,但在我上传后,在线版本显示:
Configuration Error Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. Parser Error Message: Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive. Source Error: Line 37: </buildProviders> Line 38: </compilation> Line 39: <httpRuntime targetFramework="4.0" encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> Line 40: <machineKey compatibilityMode="Framework45" /> Line 41: </system.web> Source File: D:\HostingSpaces\o\o.com.au\wwwroot\web.config Line: 39 -------------------------------------------------------------------------------- Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272
根据本网站上的其他答案,因为服务器上的帐户设置为使用.NET Framework 2.0。但是我的情况并非如此,我已经确定它设置为4.0,我甚至尝试过4.0集成。但它仍然显示此错误。
可能导致这种情况的原因是什么?我该如何解决?
答案 0 :(得分:18)
应用程序正在尝试使用ASP.NET 4.5中的新功能(特别参见<httpRuntime>
和<machineKey>
元素),但服务器只有ASP.NET 4.0。从Web.config中删除<httpRuntime>
和<machineKey>
元素以解决问题。
(有趣的是:<httpRuntime/targetFramework>
属性直到4.5才存在。所以即使值为“4.0”,服务器仍然会失败,因为它根本不会看到这个属性。)
答案 1 :(得分:7)
可以通过转到IIS,单击“应用程序池”并将“版本”设置为4.0(集成)(运行站点的版本)来解决此问题。接受的答案是HttpRunTime / targetFrameWork&gt;直到4.5才存在。这是不正确的。作为参考,这是HttpRuntime V2 Doc。 TargetFrameWork是第4版的新功能。
OP问题中的问题是,他将站点的.NET版本设置为4,但在远程服务器上,2.0正在运行,因此出现错误。在这种情况下,由于他无法控制远程服务器(假设),在本地将.NET版本更改为2.0可以解决问题,而无需摆弄web.config。
答案 2 :(得分:2)
我认为您的IIS中的应用程序池设置不正确,您必须将您的应用程序池设置为ASP.NET v4.0。
希望这个帮助
答案 3 :(得分:0)
在我的情况下,解决方案与我的服务器上没有ASP.NET 4无关。我的服务器位于负载均衡器上,网站的文件位于分布式文件系统上。我需要使用有效的用户和密码连接到DFS。完成后我不再看到错误。但是,如果您遇到此问题,请先检查其他解决方案。我会说如果你看到这个错误,那么在十分之九的情况下,.NET Framework不在服务器上,或者没有为应用程序池指定。