'System.Web.Extensions'在IIS7上部署.Net Framework 4网站时遇到问题

Cyr*_*pta 20 .net asp.net iis iis-7 .net-4.0

我正在尝试在IIS7服务器上部署.Net framework 4网站.我已经将应用程序池的目标框架更改为.Net 4,但应用程序仍然向我显示错误:

"无法读取配置部分'system.web.extensions',因为它缺少部分声明"

我猜这与.Net4的新功能有关,它让我有一个紧凑的Web配置文件.我认为由于某种原因,IIS7对此并不满意.

如何成功部署此应用程序或者必须缩减到v3.5?我相信那里有一个解决方案.

你有什么建议吗?

Wim*_*dse 30

如果在IIS 7(.5)中创建新网站,也可能会出现同样的错误,因为它为新网站创建的应用程序池可能仍设置为2.0,因此system.web.extensions在2.0配置文件中无效.

只需进入IIS管理器,选择应用程序池,为您的应用程序选择一个,右键单击,高级设置,并将.NET框架版本设置为v4.


Seb*_*ldi 10

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
Run Code Online (Sandbox Code Playgroud)

该错误是由于此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>
Run Code Online (Sandbox Code Playgroud)

由于某种原因,添加该部分会覆盖system.web.extensions组.解决方案是

  1. 如果您不需要,请注释上面的代码.
  2. 将以下代码添加到Web.config节组

..

<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>
Run Code Online (Sandbox Code Playgroud)


Cyr*_*pta 4

经过一番搜寻后,我可以自己解决这个问题(发生了!)。

显然与配置文件的结构方式无关,它是 ASP.Net Ajax 的程序集,未部署在我的目标服务器上,但可能存在于我的开发计算机上。

我从 web.config 文件中删除了该条目,这个问题得到了解决,还有其他一些小问题,但没有什么值得一提的。

IIS7+.Net Framework 4 的部署体验并不太困难,而且增加的功能将是值得的。