在将应用程序从经典模式迁移到集成模式时,可以保留经典模式下的自定义模块和处理程序注册,也可以将这些注册移除。如果不移除经典模式下使用的 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>节点:
在集成模式中,HTTP处理程序注册方式是添加一个<system.webServer>\<handlers>节点:
使用集成模式,申请人姓名无法带出来,除非改成经典模式。
使用集成模式,申请人可以带出来,因为使用了<system.webServer>\<handlers>节点进行HTTP处理程序的注册
结论:本人觉得非常遗憾,两个系统之所以出错,其实都与程序无关,而与服务器的部署有关,关于这个问题的责任,其实也是程序员和系统管理员共同的责任。首先程序员不懂得windows server 2008的部署,不同的系统,不同的程序,其部署的选项随程序的写法而有所不同,我们不能怪系统管理员,因为系统管理员对系统的程序是不清楚的,所以我们不能祈求系统管理员能够帮我们部署成功。所以作为程序员,我们对系统的部署是要非常清楚的。 |