IIS7部署 - 复制'system.web.extensions / scripting / scriptResourceHandler'部分

时间:2010-08-02 11:38:21

标签: asp.net deployment iis-7

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

  

有重复   'system.web.extensions / scripting / scriptResourceHandler'部分   定义

评论违规行也没有帮助。关于我需要做什么或看什么的任何指示?

16 个答案:

答案 0 :(得分:322)

如果您的计划要部署到在.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,就像您的开发计算机似乎有。

答案 1 :(得分:47)

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

enter image description here

答案 2 :(得分:45)

如果像我一样,您需要定位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>

答案 3 :(得分:3)

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

答案 4 :(得分:2)

El problema es porque el pool por defecto esta en .net 4.0 解决方案:entrar一个Administrador IIS服务器lado derecho establecer valores de grupos de aplicaciones。![在此处输入图像描述] [1] y cambiar la vercion del framework ![在此处输入图像说明] [2]

Con esto pudes solucionar el problema al instalar la administracion central SharePoint 2010

-----通过谷歌翻译-----

问题是因为池是默认的。 Net 4.0解决方案:输入服务器IIS管理器以在应用程序池的右侧设置值。 [在此处输入图像说明] [1]并更改框架版本![在此处输入图像说明] [2]

这应解决安装SharePoint管理中心2010的问题

答案 5 :(得分:2)

我的应用是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. 导航至&#34; C:\ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation&#34;
  3. 运行servicemodelreg -i

答案 6 :(得分:2)

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

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

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

答案 7 :(得分:1)

Apparently, other have (had) this proble米。他们在Framework 4.0中重建。你能吗?

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

答案 8 :(得分:1)

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

答案 9 :(得分:0)

另一种避免此问题可以帮助他人的方法是尽可能将.net网络服务构建到4.0或更高版本。

答案 10 :(得分:0)

在我的情况下,我想手动添加urlrewrite规则,但看不到明显的错误(我错过<rules>标记):

错误的代码:                 

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

我的决议有点愚蠢。

  • 我安装了.net 3.5

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

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

  • 回收旧池和新池,网站开始运作。

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

答案 13 :(得分:0)

我已经解决了它,执行了以下步骤:

  1. 我在IIS中创建了一个新的应用程序组。
  2. 打开具有的网站或Web应用程序的高级设置 这个问题。
  3. 并设置新应用程序的组。
  4. 这里有这些步骤的图像:

    Create a new application's group

    After you create the application's group

    Set the application group in your site or web app

答案 14 :(得分:0)

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

就我而言,在我的应用程序的Web.Config文件之上,我在根文件夹(C:\ Inetpub \ www.root)中有一个额外的Web.Config文件。经过一些测试后可能会离开那里,我已经忘记了所有这些,并且无法弄清楚问题是什么。

删除它解决了我的问题。

答案 15 :(得分:0)

这对你来说可能是错误的答案。但这是我试图解决问题时谷歌的第一次打击。随着说......

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

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

我发现虚拟目录路径错误。

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

希望这有助于某人!

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