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

问题描述 投票:202回答:16

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

定义了一个重复的'system.web.extensions / scripting / scriptResourceHandler'部分。

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

asp.net deployment iis-7
16个回答
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,就像您的开发机器似乎一样。


0
投票

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


0
投票

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


0
投票

我的决议有点愚蠢。

  • 我安装了.net 3.5的副本
  • 创建了另一个应用程序池并选择了.net 3.5(在下拉列表中显示为2.0.5077)
  • 将我的网站添加到该应用程序池中
  • 回收旧的和新的池,网站开始工作。

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


0
投票

在我的情况下,我想手动添加网址重写规则,但无法看到明显的错误(我错过了qazxsw poi标签):

错误的代码:

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

0
投票

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

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

这里有这些步骤的图像:

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

Create a new application's group

After you create the application's group


0
投票

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

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

删除它解决了我的问题。


0
投票

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

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

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

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

Set the application group in your site or web app

希望这能帮到别人!

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


47
投票

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

enter image description here


46
投票

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

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


2
投票

问题是因为默认池位于.net 4.0解决方案:输入IIS服务器服务器右侧设置应用程序组值。![在此处输入图像描述] [1]并更改框架的视图![输入图像说明这里] [2]

有了这个,您可以在安装SharePoint 2010管理中心时解决问题

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

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

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


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. 导航到“C:\ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation”
  3. 运行servicemodelreg -i

2
投票

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

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

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


1
投票

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

还有,see this about making sure your IIS is fresh


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.