尝试在IIS7中将框架部分设置为4.0的默认应用程序池上部署.net 3.5网站时,出现以下错误。
有重复 'system.web.extensions / scripting / scriptResourceHandler'部分 定义
评论违规行也没有帮助。关于我需要做什么或看什么的任何指示?
答案 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)
答案 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处理程序。使用以下步骤:
答案 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中重建。你能吗?
答案 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)
答案 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" />
希望这有助于某人!
这是我的第一篇文章,所以要温柔:)