【问题标题】:IIS7 deployment - duplicate 'system.web.extensions/scripting/scriptResourceHandler' sectionIIS7 部署 - 重复“system.web.extensions/scripting/scriptResourceHandler”部分
【发布时间】:2011-03-24 04:09:10
【问题描述】:

尝试在 IIS7 中的默认应用程序池上部署 .net 3.5 网站并将框架部分设置为 4.0 时,我收到以下错误。

有一个重复 “system.web.extensions/scripting/scriptResourceHandler”部分 已定义。

评论有问题的行也无济于事。关于我需要做什么或看什么的任何指示?

【问题讨论】:

    标签: asp.net deployment iis-7


    【解决方案1】:

    如果您的计划是部署到具有在 .net 4.0 中运行的应用程序池的 IIS,您将需要清理包含所有指向 .net 3.5 的定义部分的 web.config。失败的原因是因为这些节定义已经包含在 .NET 4.0 的根 web.config 中(请参阅 %windir%\microsoft.net\framework\v4.0.30319\config\machine.config),其中包括所有系统。 web.extensions 已经声明。

    另一个快速解决方法是将应用程序池设置为 2.0,就像您的开发机器看起来一样。

    【讨论】:

    • 谢谢。在进行了更多修改后,我实际上已经想出了这个解决方法..
    • 感谢您对此的解释。我一直看到从配置文件中删除部分的解决方案,我想知道,“如何删除配置文件的部分内容”?
    • 我的应用程序池设置为 4.0 而不是 2.0!
    • 这很容易,将这个旧网站切换到 2.0 应用程序池,中提琴就可以了!谢谢!
    • 删除 web.config 中的 .net 3.5 部分对我有用
    【解决方案2】:

    我的解决方案是将默认应用程序池的应用程序池中的 .NET 框架版本从 v4.0 更改为 v2.0:

    【讨论】:

    • aaaand,如果您实际上在应用程序中使用 .NET 4.0?
    • @MichaelPaulukonis 我遇到了这个问题,原来在我的网站继承的根网站中有一个 web.config。
    • @MichaelPaulukonis,这样的事情会发生!
    • 我的应用程序从 3.5 升级到 4.0 时遇到了这个问题,应用程序池已正确更新,但 web.config 已过时。 Web.config 试图添加自 4.0 以来是本机且不需要显式添加的所有节组。
    【解决方案3】:

    如果像我一样,您需要以 v4 为目标,但只能使用 .net 3.5 构建,请按照说明进行操作 here。只需在您的 web.config 中将 <configSections> 的全部内容替换为:

    <configSections>
    <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>
    

    【讨论】:

    • 您的解决方案是解决我的错误的唯一解决方案!非常感谢!
    • 这也解决了我的问题。服务器已升级 IIS6 到 IIS7.5。在 IIS6 上,它在 v4.0 下运行,但 IIS7.5 需要此 web.config 更改。
    • 这太棒了。
    • PublicKeyToken 中的值区分大小写(应该与答案中的一样)。我有我的大写字母,但没有用。
    【解决方案4】:

    将应用程序池设置为2.0,我做到了并且工作了。

    【讨论】:

      【解决方案5】:

      死灵术。
      如果您的 web.config 中没有任何 system.web.extensions 配置部分或处理程序/模块条目,则导致此问题是因为您/其他人复制了 VisualStudio-Project (2013/2015/2017) 同时有隐藏文件未隐藏

      因此,它不仅会复制 .git,还会复制 .VS,其中包含一个 IIS-Express applicationhost.config 文件,指向 web.config 文件位于不存在的路径(或者更糟的是,确实存在但内容不同的路径)...

      解决方案:
      删除 .VS 文件夹中的 applicationhost.config 文件。
      或者干脆删除 .VS 文件夹。
      Visual Studio 将重新创建它。

      【讨论】:

      • 很好的解释
      【解决方案6】:

      我的应用是 ASP.Net3.5 应用(使用框架的第 2 版)。创建 ASP.Net3.5 应用程序时,Visual Studio 自动将 scriptResourceHandler 添加到 web.config。 .Net 的更高版本将其放入 machine.config 中。如果您使用版本 4 应用程序池运行 ASP.Net 3.5 应用程序(取决于安装顺序,这是默认应用程序池),您将收到此错误。

      当我开始使用 2.0 版应用程序池时。错误消失了。然后我必须在提供 WCF .svc 时处理错误:

      HTTP 错误 404.17 - 未找到 请求的内容似乎是脚本,不会由静态文件处理程序提供服务

      经过一番调查,我似乎需要注册 WCF 处理程序。使用以下步骤:

      1. 打开 Visual Studio 命令提示符(以管理员身份)
      2. 导航到“C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation”
      3. 运行 servicemodelreg -i

      【讨论】:

        【解决方案7】:

        Apparently, other have (had) this problem。它们在 Framework 4.0 中重建。可以吗?

        另外,see this about making sure your IIS is fresh

        【讨论】:

          【解决方案8】:

          在我的情况下,它发生在我将整个解决方案(使用名为 Target Framework Migrator 的扩展)转换为 4.6.2 但最终撤消更改并返回到 3.5(解决方案由 TFS 版本控制)之后。 为了解决这个问题,我只将有问题的项目(使用 IIS Express 运行)转换为 4.6.2,然后再转换回 3.5。

          【讨论】:

          • 谢谢。似乎恢复和撤消更改不会正确地将应用程序正确地带入 .NET 3.5 状态。
          【解决方案9】:

          避免此问题的另一种可能对其他人有所帮助的方法是将您的 .net Web 服务构建到 4.0 或更高版本(如果可能)。

          【讨论】:

            【解决方案10】:

            就我而言,我有 2 个不同的应用程序共享同一个应用程序池。第一个使用 .net4.5 框架,新的使用 2.0。当我将第二个应用程序更改为它自己的应用程序池时,它开始正常工作,无需更改 web.config。

            【讨论】:

              【解决方案11】:

              我的决定有点愚蠢。

              • 我安装了 .net 3.5 的副本

              • 创建了另一个应用程序池并选择了 .net 3.5(它说 2.0.5077 in 下拉菜单)

              • 将我的网站添加到该应用程序池中

              • 回收了新旧水池,站点开始工作。

              这归结为我没有安装 3.5,即使打开 Windows 功能说我安装了并创建了另一个应用程序池来使用。我希望这对其他人有所帮助。

              【讨论】:

                【解决方案12】:

                就我而言,我想手动添加 urlrewrite 规则,但看不到明显的错误(我错过了&lt;rules&gt; 标签):

                错误代码:

                    <rewrite>
                      <rule name="some rule" stopProcessing="true">
                        <match url="some-pattenr/(.*)" />        
                        <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
                      </rule>
                    </rewrite>    
                
                  </system.webServer>
                </configuration>
                

                正确的代码(带有规则标签):

                    <rewrite>
                      <rules>
                        <rule name="some rule" stopProcessing="true">
                          <match url="some-pattenr/(.*)" />        
                          <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
                        </rule>
                      </rules>
                    </rewrite>
                
                  </system.webServer>
                </configuration>
                

                【讨论】:

                  【解决方案13】:

                  我已经解决了,做了以下步骤:

                  1. 我在 IIS 中创建了一个新的应用程序组。
                  2. 为正在安装的站点或 Web 应用程序打开高级设置 这个问题。
                  3. 并设置新应用程序的组。

                  这里有这些步骤的图片:

                  【讨论】:

                    【解决方案14】:

                    此错误消息似乎出现在各种情况下。

                    就我而言,在我的应用程序的 Web.Config 文件之上,我在根文件夹 (C:\Inetpub\www.root) 中有一个额外的 Web.Config 文件。可能是经过一些测试后离开的,我已经完全忘记了,也不知道是什么问题。

                    删除它为我解决了问题。

                    【讨论】:

                      【解决方案15】:

                      这可能是你的错误答案。但是当我试图解决我的问题时,这是对谷歌的第一次打击。话虽如此......

                      我也出现了同样的错误消息,但是当我尝试通过 Visual Studio 运行 IIS Express 时。

                      我的问题是我错误地将 applicationhost.config 提交到 TFS。后来,当我在获得最新提交后尝试在笔记本电脑上运行该项目时。这就是错误发生的时候。

                      发现虚拟目录路径不对。

                      <virtualDirectory path="/" physicalPath="C:\Users\user1\Documents\Visual Studio 2015\Projects\ProjectName\ProjectName\ProjectName.Web" />
                      

                      希望这对某人有所帮助!

                      这是我的第一篇文章,所以要温柔:)

                      【讨论】:

                        猜你喜欢
                        • 2014-03-02
                        • 2013-11-03
                        • 2016-02-12
                        • 1970-01-01
                        • 1970-01-01
                        • 2011-01-30
                        • 2012-04-13
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多