背景
今天同事发我一个问题,说的是把一个ASP.NET站点从A服务器迁移到B服务器上,但是在B服务器的IIS中配置好站点后访问时确报了一个错误:
错误信息如下:
Detailed Error Information:
Module IIS Web Core
Notification BeginRequest
Handler Not yet determined
Error Code 0x80070021
Config Error
This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is eigher by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".
Config File \\?\C:\publish\web.config
错误截图如下:
问题分析
从图中可以看到web.config中标红的部分是handlers配置节,错误信息是这个配置节不能用在这个地方,也就是说IIS在解析web.config中handlers配置节时无法解析。
就让同时把发布的文件包发给我,在我的服务器IIS上做了一下测试,发现访问是正常的。那么基本推断是IIS环境的问题。那么首先看看用到的应用程序池中.netframework有没有安装好,版本是不是一致。
问题发现
通过以上排查,发现B服务器上在Windows Server中添加删除角色功能中配置Web服务器时少安装了应用程序开发下面的ASP.NET4.6及相关项。
问题解决
如下图在在服务器角色中把Web服务器下的应用程序开发及下面的相关项勾选进行安装,安装后重启一下服务器,就解决这个问题了。