无法读取配置部分'system.web.extensions',因为它缺少部分声明(具有特定代码分支的发生)

时间:2018-05-30 19:47:30

标签: .net .net-3.5 iis-express system.web.extensions

我注意到我每天使用的一个Web应用程序今天早些时候运行的问题。代码编译正常,当应用程序开始运行时,我收到HTTP响应500.19 - 内部服务器错误。

Detailed Error Information:

Module     IIS Web Core
Notification       Unknown
Handler    Not yet determined
Error Code     0x80070032
Config Error       The configuration section 'system.web.extensions' cannot be read because it is missing a section declaration
Config File    \\?\C:\TFS\Source Control\ManagementSystem\Prod\MS\App\web.config
Requested URL      http://localhost:40095/Ship/AddEditOrder.aspx
Physical Path      
Logon Method       Not yet determined
Logon User     Not yet determined
Request Tracing Directory      C:\Users\{User}\Documents\IISExpress\TraceLogFiles\

在此下方,我看到以下内容:

更多信息:

  

读取时出现此错误   Web服务器或Web应用程序的配置文件。在一些   例如,事件日志可能包含有关原因的更多信息   这个错误。

     

如果您看到文字“有重复   'system.web.extensions / scripting / scriptResourceHandler'部分   定义“,此错误是因为您正在运行.NET Framework   .NET Framework中基于3.5的应用程序4.如果您运行的是WebMatrix,要解决此问题,请转到“设置”节点以设置   .NET Framework版本为“.NET 2”。您也可以删除额外的   来自web.config文件的部分。

这听起来像IIS的问题,我已经检查了这个问题的建议解决方案如下:

上一篇文章看起来最有希望,但我无法找到我试图运行的应用程序的任何痕迹。

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题!

该消息有点误导,但在将这些文章与其中一些文章联系起来后,我提出了以下解决方案。我的本地解决方案似乎已将其自己的IIS设置保存到我们的.Net Framework从3.5升级到4.0的特定“站点” 之前 。换句话说,IIS条目有一个陈旧的应用程序池框架声明。

其中许多文章都提到了更改IIS Express设置的需求,这些设置通常会指向基于用户的文件夹目录,例如

  

C:\用户\用户\文档\ IISExpress \配置\对ApplicationHost.config

但正如我在原帖中所提到的,我的任何项目都没有遗留下来。

我一直在挖掘,发现解决方案本身实际上也保留了这些设置的本地副本!您可以在“。vs”文件夹中找到本地项目解决方案附近的文件!

示例:

  

C:\ TFS \ Source Control \ WMS \ Prod \ WMS.vs \ config \ applicationhost.config

从那里我追踪了有问题的网站

<site name="WHSMGMTApp" id="3">
                <application path="/" applicationPool="Clr2IntegratedAppPool">
                    <virtualDirectory path="/" physicalPath="C:\TFS\Source Control\WMS\Prod\WMS\WHSMGMTApp" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:40095:localhost" />
                </bindings>
            </site>

我导航到我的网站的应用程序池节点,发现它仍然在.Net版本2.0上,但它必须是4.0。

查找“应用程序池”节点并找到您的应用程序池

就我而言,它是 Clr2IntegratedAppPool

   <applicationPools> 
<add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
            </applicationPools>

我将managedRuntimeVersion从“v2.0”更改为“v4.0”并且繁荣,它有效!

这似乎是一个非常小众的场景,您已经在解决方案中升级了.Net Framework并且您已经针对特定的代码分支具有本地IIS Express条目。 (这解释了为什么我的QA分支正在工作而不是我的Prod分支,因为它们在.config文件中有单独的条目)

为什么 视觉工作室需要它自己的.config版本的任何见解都是受欢迎的!