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

有一个副本 包含。扩展/脚本/ scriptResourceHandler”部分 定义的。

对这些冒犯的行进行评论也无济于事。你能给我点建议吗?


当前回答

我的应用程序是一个ASP.Net3.5应用程序(使用框架的版本2)。当创建ASP.Net3.5应用程序时,Visual Studio自动将scriptResourceHandler添加到web.config中。后来版本的。net把它放到了machine.config中。如果你运行ASP。Net 3.5应用程序使用版本4的应用程序池(取决于安装顺序,这是默认的应用程序池),你会得到这个错误。

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

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

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

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

其他回答

Necromancing。 如果你的web中没有任何system.web.extensions config-sections或handler/module条目。此问题是由于您/其他人复制了VisualStudio-Project(2013/2015/2017),而隐藏文件未隐藏。

因此,它不仅会复制.git,还会复制. vs,其中包含一个IIS-Express应用程序主机。配置文件,指向web。配置文件路径不存在(或者更糟,路径存在,但没有相同的内容)…

解决方案: 删除applicationhost。配置文件在。vs文件夹。 或者干脆删除。vs文件夹。 Visual Studio将重新创建它。

将应用程序池设置为2.0,我做到了并成功了。

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

如果像我一样,需要以v4为目标,但只能使用。net 3.5构建,请遵循这里的说明。只需替换在你的网页。配置<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>

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