升级到.NET 4.0时出现<system.web.extensions>配置组问题</system.web.extensions>

时间:2010-07-09 01:13:27

标签: asp.net deployment web-config asp.net-4.0 system.web

因此我们将网站从3.5 SP1升级 - &gt; .NET 4。

当我们运行该站点时,我们收到内部服务器错误(500),说明无法读取以下配置组:

<system.web.extensions>
        <scripting>
            <scriptResourceHandler enableCompression="true" enableCaching="true" />
            <webServices>
                <jsonSerialization maxJsonLength="999999" />
            </webServices>
        </scripting>
    </system.web.extensions>

我们注释掉了这一部分并且网站运行正常(但现在我们遇到了JSON问题 - 因为上述必需的属性)。

我们已经阅读了有关此问题的主题,并且大多数人都说“您的应用程序池未运行4.0”。它就是,所以这不是问题。

我还读过线程,说IIS正在以某种方式读取旧的machine.config文件。

使用.NET 4,正如您所知,web.config的许多部分已移至machine.config。

因此我们将此部分放回web.config的顶部:

<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                    <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
                    <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
                    <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
                    <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
                </sectionGroup>
            </sectionGroup>
        </sectionGroup>

现在网站似乎工作正常。

尽管如此,我还是有点担心这是否是正确的解决方案。

任何人的想法?这是正确的解决方法吗?

修改

3周,没有答案......该死的。 =)

3 个答案:

答案 0 :(得分:2)

由于我没有答案,广泛的谷歌搜索也没有爱,我决定坚持原来的修复(将system.web.extensions部分添加回web.config)。

答案 1 :(得分:2)

我最近遇到了这个问题,经过一些故障排除后能够解决它。希望我所做的也有助于解决您的问题。 1.确保您为该站点运行的App池使用的是.NET 4管道 2.在记事本中打开.csproj(或.vbproj,如果你的是VB项目)并演练文件并检查是否存在对v2.0 Framework文件的任何硬编码引用。在我的情况下,我们有一个使用v2.0编译器路径的“After Build”任务,这迫使应用程序仍然使用2.0运行时。就像下面一样。

<Target Name=”AfterBuild” Condition=”’$(MvcBuildViews)’==’true’”>
<AspNetCompiler Condition=”’$(IsDesktopBuild)’ != ‘false’” VirtualPath=”temp” ToolPath=”$(WINDIR)\Microsoft.NET\Framework\v2.0.50727” PhysicalPath=”$(ProjectDir)\..\$(ProjectName)” />
<AspNetCompiler Condition=”’$(IsDesktopBuild)’ == ‘false’” VirtualPath=”temp” ToolPath=”$(WINDIR)\Microsoft.NET\Framework\v2.0.50727” PhysicalPath=”$(OutDir)\_PublishedWebsites\$(ProjectName)” />

确保将它们更改为v4.0,甚至更好地使它们具有可配置性。 希望有所帮助。

-Vamsi

答案 2 :(得分:0)

另外两个信息可能会有所帮助,也可能没有帮助。

  1. 与上面的sectionGroup和我的机器sectionGroup的唯一区别是这里的version = 3.5.0.0和machine.config中的version = 4.0.0.0。 1。
  2. 事件日志中的错误是“无法加载站点的所有ISAPI筛选器...”是否可以安装未正确注册.net 4的System.Web.Extensions?
  3. 我想在此测试更多,但不幸的是我只在生产系统而不是开发系统中看到这种行为。