上篇 说到AjaxPro为我们生成了四个ashx文件来达到异步调用的目的,这次呢,就说说这些ashx文件是怎么生成的;

核心部分是其web.config配置了httpHandlers 元素
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?<httpHandlers>
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?      
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?
</httpHandlers>
作用是:对ajaxpro目录下的*.ashx文件的POST,GET请求交由程序集AjaxPro下的AjaxPro.AjaxHandlerFactory类来处理;

ps:关于httpHandlers的说明可以参看下面几个连接
1.httpHandlers 元素(ASP.NET 设置架构)
2.Microsoft ASP.NET 快速入门教程
3.ASP.NET中的Http Handles

先看看实现IHttpHandlerFactory接口的AjaxHandlerFactory类,只实现了GetHandler方法

其中对core,prototype的处理没什么可说,只是简单的通过EmbeddedJavaScriptHandler的ProcessRequest中将js写入.ashx文件,而converter比较复杂留代下次再做详细分析;这里就重点看看AJAXDemo.Examples.Test.TestMethod,App_Code.urx4hqkg.ashx是怎么来的了;

我跟踪了下代码的运行,在页面加载的时候自定义 HttpHandler 启用 HTTP Web 请求的处理ProcessRequest,也就是进入AjaxHandlerFactory类GetHandler方法的如下入口
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?default:
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?                            
if(Utility.Settings.UrlNamespaceMappings.Contains(filename))
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?                                t 
= Type.GetType(Utility.Settings.UrlNamespaceMappings[filename].ToString());
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?                            
if(t == null)
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?                                t 
= Type.GetType(filename);
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?
【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?                            
return new TypeJavaScriptHandler(t);

TypeJavaScriptHandler也实现了 【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?public void ProcessRequest(HttpContext context)
        }

相关文章:

  • 2021-07-16
  • 2021-11-07
  • 2022-12-23
  • 2022-12-23
  • 2021-08-04
  • 2021-07-31
猜你喜欢
  • 2021-08-27
  • 2022-01-11
  • 2022-12-23
  • 2022-12-23
  • 2021-06-02
相关资源
相似解决方案