在升级到.NET 4.0时, config组的问题
-
13-09-2020 - |
题
所以我们从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
两个可能或可能无助的信息更多的信息。
- 与上述部分组和我的机器部分群体的唯一区别在于,在此处版本= 3.5.0.0以及Machine.config中的版本= 4.0.0.0。 1.
- 事件日志中的错误是“无法加载站点的所有ISAPI过滤器......”可以安装System.Web.extensions,这些extrensions未正确注册.NET 4?
我很乐意在这方面测试更多,但不幸的是我只看到生产系统中的这种行为而不是开发系统。