web.config 配置如下:
system.web/httphandlers
<httpHandlers> <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro" /> </httpHandlers>
system.webServer/handlers
<handlers> <add name="AjaxPro" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory,AjaxPro" path="ajaxpro/*.ashx" /> </handlers>
如上配置在IIS7集成模式下没有问题,但部署到服务其它低版本服务器上会有问题。因为低版本没有集成模式,默认是经典模式。所以为了兼容老版本配置,删除system.webServer节点下的AjaxPro注册,统一使用经典模式,则此问题得以解决。
以下是微软官方对于system.webServer的解释:
system.webServer 节中的某些设置只适用于 IIS 7.0 集成模式,而不适用于经典模式。具体而言,如果应用程序正在经典模式下运行,则会忽略 Web.config 文件的 system.WebServer 节中指定的所有托管代码模块和处理程序。与 IIS 的早期版本相同,托管代码模块和处理程序必须在 system.web 节的 httpModules 和 httpHandlers 元素中定义。
本主题阐释需要修改 system.webServer 节的三个常见配置任务:
-
添加默认文件,以便在请求 URL 未包含特定的文件时,提供该默认文件。
-
注册托管代码模块。
-
添加自定义响应标头