因此我们将网站从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正在以某种方式读取旧的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周,没有答案......该死的。 =)
答案 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)
另外两个信息可能会有所帮助,也可能没有帮助。
我想在此测试更多,但不幸的是我只在生产系统而不是开发系统中看到这种行为。