所以我们从3.5 sp1 - > .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是以某种方式阅读旧机器.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周,没有答案......该死的。=)

有帮助吗?

解决方案

因为我没有答案,并且广泛的googling导致了没有爱,我决定坚持我的原始修复(将system.web.extensions部分添加回web.config)。

其他提示

我最近遇到了这个问题,并且能够在一些故障排除后解决它。希望我所做的事情也有助于解决你的问题。 1.确保您为网站运行的应用程序池正在使用.NET 4流水线 2.在记事本中打开.csproj(或.vbproj,如果您是VB项目)在记事本中并追踪文件并检查是否有任何硬编码引用对v2.0框架文件。在我的情况下,我们使用v2.0编译器路径使用v2.0编译路径进行“构建”任务,该路径仍然使用2.0运行时使用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

两个可能或可能无助的信息更多的信息。

  1. 与上述部分组和我的机器部分群体的唯一区别在于,在此处版本= 3.5.0.0以及Machine.config中的版本= 4.0.0.0。 1.
  2. 事件日志中的错误是“无法加载站点的所有ISAPI过滤器......”可以安装System.Web.extensions,这些extrensions未正确注册.NET 4?
  3. 我很乐意在这方面测试更多,但不幸的是我只看到生产系统中的这种行为而不是开发系统。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top