所以我们已经从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周无answers...damn。=)
发布于 2010-08-03 01:41:52
由于我没有答案,而且大量搜索也没有爱情,所以我决定坚持原来的修复方法(将system.web.extensions部分添加回web.config中)。
发布于 2010-12-31 09:39:49
我最近遇到了这个问题,在进行了一些故障排除后才得以解决。希望我所做的也能帮你解决问题。1.确保您正在为站点运行的应用程序池使用.NET 4管道2。在记事本和演练文件中打开.csproj (如果您的项目是VB项目,则打开.vbproj ),并检查是否有对v2.0Framework文件的硬编码引用。在我的例子中,我们有一个“生成后”任务,它使用v2.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
发布于 2010-10-13 22:50:11
另外两段信息可能有用,也可能没有帮助。
我很想对此进行更多的测试,但不幸的是,我只在生产系统而不是开发系统中看到了这种行为。
https://stackoverflow.com/questions/3209192
复制相似问题