检测到在集成的托管管道模式下不适用的 ASP.NET 设置的解决方法

时间:2021-03-03 03:26:11

在将应用程序从经典模式迁移到集成模式时,可以保留经典模式下的自定义模块和处理程序注册,也可以将这些注册移除。如果不移除经典模式下使用的 httpModules 和 httpHandlers 注册,则必须将 validation 元素的 validateIntegratedModeConfiguration 属性设置为 false 以避免错误。如果保留自定义模块,添加以下代码:

 <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />   
  </system.webServer>

如果仅仅是将集成模式改成经典模式,那么就是治标不治本了。

转摘一篇文章:  

关于ESPS和SCSJ在Windows server 2008的问题总结

SCSJ出现的问题在于集成模式和经典模式的选择上,系统本身是没有问题的。我们在部署系统的时候,选择了集成模式,导致WebConfig的HttpHandlers节点无法访问。

在集成模式中,HTTP模块和HTTP处理程序不再定义于<system.web>中,而定义于<system.webServer>中。如果在集成模式中运行一个包括了HTTP模块或HTTP处理程序的web.config文件,那么将会发生失效。

因为集成模式下,要想运行HTTP处理程序,必须在配置文件中添加一个<system.webServer>\<handlers>节点代替经典模式下的<system.web>\<httpHandler>节点。进行这种转换后,程序HTTP处理程序成功执行。

具体的转换方式如下:

在经典模式中,HTTP处理程序注册方式是添加一个<system.web>\<httpHandler>节点:

检测到在集成的托管管道模式下不适用的 ASP.NET 设置的解决方法

在集成模式中,HTTP处理程序注册方式是添加一个<system.webServer>\<handlers>节点:

检测到在集成的托管管道模式下不适用的 ASP.NET 设置的解决方法

使用集成模式,申请人姓名无法带出来,除非改成经典模式。

检测到在集成的托管管道模式下不适用的 ASP.NET 设置的解决方法

使用集成模式,申请人可以带出来,因为使用了<system.webServer>\<handlers>节点进行HTTP处理程序的注册

检测到在集成的托管管道模式下不适用的 ASP.NET 设置的解决方法

结论:本人觉得非常遗憾,两个系统之所以出错,其实都与程序无关,而与服务器的部署有关,关于这个问题的责任,其实也是程序员和系统管理员共同的责任。首先程序员不懂得windows server 2008的部署,不同的系统,不同的程序,其部署的选项随程序的写法而有所不同,我们不能怪系统管理员,因为系统管理员对系统的程序是不清楚的,所以我们不能祈求系统管理员能够帮我们部署成功。所以作为程序员,我们对系统的部署是要非常清楚的。