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


209

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

定义了重复的“ system.web.extensions / scripting / scriptResourceHandler”部分。

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

Answers:


338

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

另一个快速解决方案是将应用程序池设置为2.0,就像开发计算机看起来那样。


谢谢。在修改了更多内容之后,我实际上已经找到了解决方法
。–

3
感谢您的解释。我一直看到从配置文件中删除某个部分的解决方案,但我想知道,“如何将配置文件的一部分剪裁为解决方案”?
亚当·布鲁斯

13
我的APP池设置为4.0,而不是2.0!
RolandoCC 2014年

1
这很容易,将这个较旧的站点切换到2.0应用程序池,中提琴就可以正常工作!谢谢!
mgrenier 2014年

1
只是删除web.config中的.net 3.5部分对我
Anand

49

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

在此处输入图片说明


13
aaaand,如果您实际上在应用程序中使用.NET 4.0?
Michael Paulukonis 2012年

3
@MichaelPaulukonis我遇到了这个问题,原来在我的网站继承自的根网站中有一个web.config。
guanome

@MichaelPaulukonis,像这样的pfft会发生!
DaveDev

当我的应用程序从3.5升级到4.0时,我遇到了这个问题,应用程序池已正确更新,但是web.config已过时。Web.config试图添加所有自4.0起就属于本机且无需显式添加的部分组。
drizin

48

如果像我一样,您需要定位到v4,但只能使用.net 3.5进行构建,请按照此处的说明进行操作。只需将您的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
您的解决方案是解决我的错误的唯一方法!非常感谢!
Devdatta Tengshe

1
这也解决了我的问题。服务器已从IIS6升级到IIS7.5。在IIS6上,它运行在v4.0下,但是IIS7.5需要对此web.config进行更改。
johna 2014年

太棒了
mzonerz '16

PublicKeyToken中的值区分大小写(应该看起来像答案中的一样)。我的大写字母是我的,那没有用。
比约恩

3

.net 4.0解决方案:在IIS服务器上管理应用程序。![在此处输入图像说明] [1]在框架上输入[!]在这里] [2]

统一管理中心SharePoint 2010

-----通过Google翻译-----

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

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


22
欢迎来到StackOverflow!如果您的英语水平不足,请通过Google翻译运行您的答案。社区将通过编辑来改善任何奇怪的短语。谢谢您的回答。|||||通过Google翻译||||| Bienvenido一个StackOverflow!请勿使用任何英式英语,也不要使用Google Translate进行翻译。La comunidadmejorará取消了Extrañasen laedición。Gracias por su su respuesta。
Andrew Kozak


3

死灵法师。
如果您在web.config中没有任何system.web.extensions config-sections或处理程序/模块条目,则可能导致此问题,因为您/他人在隐藏时复制了VisualStudio-Project(2013/2015/2017)-文件未隐藏

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

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


出色的解释
威廉·贝洛

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


1

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


谢谢。似乎还原并撤消更改将无法正确将应用程序正确地置于.NET 3.5状态。
伊曼

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

就我而言,我想手动添加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>

正确的代码(带有rules标记):

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

0

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

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

这里有这些步骤的图像:

创建一个新的应用程序的组

创建应用程序的组后

在您的网站或网络应用程序中设置应用程序组


0

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

就我而言,在应用程序的Web.Config文件之上,我在根文件夹(C:\ Inetpub \ www.root)中还有一个额外的Web.Config文件。经过一些测试,可能留在了那里,我已经忘记了这一切,无法弄清楚问题出在哪里。

删除它为我解决了问题。


0

这可能是您的错误答案。但这是我尝试解决自己的问题时对Google的第一招。照这样说...

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

我的问题是我错误地提交了applicationhost.config提交给TFS。后来,当我尝试在获取最新提交后在便携式计算机上运行该项目时。这就是错误发生的时间。

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

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

希望对大家有帮助!

这是我的第一篇文章,请保持温柔:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.