【问题标题】:'System.Web.Extensions' trouble deploying .Net Framework 4 Website on IIS7在 IIS7 上部署 .Net Framework 4 网站时出现“System.Web.Extensions”问题
【发布时间】:2011-01-30 16:32:42
【问题描述】:

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

“无法读取配置节‘system.web.extensions’,因为它缺少节声明”

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

如何才能成功部署此应用,还是必须缩减到 v3.5?我相信那里有解决方案。

你有什么建议吗?

【问题讨论】:

    标签: asp.net .net iis iis-7 .net-4.0


    【解决方案1】:

    我通过以下步骤解决了这个问题: 1.设置应用池框架为4.0
    2。如果第 1 点不起作用,那么问题可能与配置继承有关。 从http://support.microsoft.com/kb/958854应用修补程序

    这应该可以解决问题。

    【讨论】:

      【解决方案2】:

      如果"aspnet_regiis.exe -iru" 没有帮助,并且您确定尝试在 .NET 4.0 应用程序池下启动站点,则可能是 IIS 7.0 的配置继承问题。 Web 服务器读取 .NET 2.0 的 machine.config。 应用修补程序KB958854 将解决配置继承问题。我已经通过这种方式成功解决了我的问题。

      【讨论】:

      • 注册 ASP.Net 4.0 版帮助我解决了我的问题。
      【解决方案3】:
      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 组。解决办法是

      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>
      

      【讨论】:

      • 如果
      【解决方案4】:

      这是因为您已将应用程序部署到 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
      

      重新运行您的应用程序,它应该可以工作。

      查看this link 进行图形演示。

      【讨论】:

        【解决方案5】:

        我从Leo Tang post找到了答案:

        此问题不是由 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)。

        执行以下步骤:

        1. 运行 IIS(执行 'inetmgr'
        2. 从左侧面板的树中选择您的应用程序(可能'Server\Sites\Default web site\Your application name'
        3. 打开您的应用程序设置(点击右侧面板“操作”中的“基本设置”)并查看应用程序池。

        4. 现在选择最适合您需要的操作:

          • 您可以为您的应用程序更改应用程序池'Application Edit' 表单中的按钮选择,然后选择'ASP .NET v4-0 经典')。 此更改只会影响此应用程序
          • 或者您可以编辑应用程序池(可能是左侧树中的 Server\Application pools\DefaultAppPool)并将其设置为在 .NET Framevork v4 下运行。 0 .请注意:此更改将影响此应用程序池下的每个应用程序...这是您想要的吗?也许...

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            【解决方案7】:

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

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

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

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

            【讨论】:

            • @Cyril 谢谢。尽管其他六个答案告诉我们使用 .NET 4 AppPool(我是),但这个解决方案是唯一有效的。
            猜你喜欢
            • 2021-12-31
            • 2011-11-26
            • 1970-01-01
            • 2011-03-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多