[英]'System.Web.Extensions' trouble deploying .Net Framework 4 Website on IIS7
我正在嘗試在IIS7服務器上部署.Net Framework 4網站。 我已經將應用程序池的目標框架更改為.Net 4,但是該應用程序仍向我顯示錯誤:
“無法讀取配置節'system.web.extensions',因為它缺少節聲明”
我猜想這與.Net4的新功能有關,該功能使我擁有一個緊湊的Web配置文件。 我認為出於某些原因,IIS7對此不滿意。
我該怎么做才能成功部署此應用程序,或者我必須縮小到v3.5? 我確定那里有解決方案。
你有什么建議嗎?
如果您在IIS 7(.5)中創建新網站,也可能會遇到同樣的錯誤,因為它為新網站創建的應用程序池可能仍設置為2.0,因此system.web.extensions
無效在2.0配置文件中。
只需進入IIS管理器,選擇應用程序池,為您的應用程序選擇一個,右鍵單擊“高級設置”,然后將.NET Framework版本設置為v4。
Module IIS Web Core
Notification BeginRequest
Handler Not yet determined
Error Code 0x80070032
Config Error The configuration section 'system.web.extensions' cannot be read because it is missing a section declaration
Config File \\web.config
該錯誤是由於將此system.web.extensions部分添加到Web.config
<system.web.extensions>
<scripting>
<webServices>
<!-- Uncomment this line to customize maxJsonLength and add a custom converter
<jsonSerialization maxJsonLength="1024000">
-->
</webServices>
<scriptResourceHandler enableCompression="true" enableCaching="true"/>
</scripting>
</system.web.extensions>
出於某種原因添加該部分,將覆蓋system.web.extensions組。 解決方案是
..
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere" />
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
</sectionGroup>
</sectionGroup>
</sectionGroup>
經過一番狩獵(發生!),我可以自己解決此問題。
顯然與配置文件的結構無關,它是ASP.Net Ajax的程序集,它沒有部署在我的目標服務器上,但可能存在於我的開發機上。
我從web.config文件中刪除了該條目,此問題已解決,還有其他一些小問題,但值得一提。
IIS7 + .Net Framework 4的部署經驗並不難,並且增加的功能將是值得的。
如果"aspnet_regiis.exe -iru"
沒有幫助,並且您確定嘗試在.NET 4.0應用程序池下啟動網站,則可能是IIS 7.0的配置繼承中的問題。 Web服務器讀取.NET 2.0的machine.config。 應用修補程序KB958854將解決配置繼承問題。 我已經通過這種方式成功解決了我的問題。
我從Leo Tang帖子中找到了答案:
此問題不是由web.config遷移引起的。 如果將應用程序更新為.Net Framework4.0,但是將此應用程序分配給在.Net Framework3.5或更早版本下運行的應用程序池,則會遇到此錯誤。 您可以將此應用程序分配給IIS中的.Net Framework4.0應用程序池以解決問題。
因此,如果您讀取錯誤,則無法讀取配置節'system.web.extensions',因為它缺少節聲明,這是因為已部署的應用程序正在配置為在.NET 2.0或3.5下運行的應用程序池下運行( DefaultAppPool?默認情況下,DefaultAppPool設置為.NET 2.0。
執行以下步驟:
打開您的應用程序設置 (從右側面板的“操作”中單擊“基本設置” ),然后查看“ 應用程序池” 。
現在,選擇最適合您的操作:
這是因為您已將應用程序部署到IIS服務器上,其中該應用程序的AppPool設置為在DefaultAppPool下運行。 DefaultAppPool自動配置為在.NET 2.0而不是.NET 4.0下運行。 這意味着System.Web.Extensions東西對於該版本的.NET Framework不可用。
更改Web應用程序的應用程序池(AppPool)設置
1. Select the application directory
2. Under Actions, click Basic Settings…
3. Change the Application Pool to ASP.NET v4.0 (or another .NET 4.0 app pool) by clicking on the Select… button.
4. Click OK
重新運行您的應用程序,它應該可以工作。
檢查此鏈接以進行圖形演示。
我通過以下步驟解決了該問題:1.將應用程序池框架設置為4.0
2.如果第1點不起作用,則問題可能與配置繼承有關。 從http://support.microsoft.com/kb/958854應用修補程序
這應該可以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.