0

我注意到我每天使用的一个 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 4 中运行基于 .NET Framework 3.5 的应用程序。如果您正在运行WebMatrix,要解决此问题,请转到“设置”节点将 .NET Framework 版本设置为“.NET 2”。您还可以从 web.config 文件中删除额外的部分。

这听起来像是 IIS 的问题,我已经检查了针对此问题的建议解决方案,如下所示:

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

4

1 回答 1

0

我终于解决了这个问题!

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

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

C:\Users\User\Documents\IISExpress\config\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 框架,并且您已经拥有针对特定代码分支的本地 IIS Express 条目。(这解释了为什么我的 QA 分支正在工作而不是我的 Prod 分支,因为它们在 .config 文件中有单独的条目)

欢迎了解为什么Visual Studio 需要它自己的 .config 版本!

于 2018-05-31T15:01:23.567 回答