自定义HttpHandlers和不同的处理程序类型

时间:2009-03-20 09:27:46

标签: asp.net httphandler

我在创建自定义处理程序时看到的所有文献都涉及将扩展名与处理程序相关联,例如如果我想要一个Ajax请求的处理程序,我可以在AjaxHandler类中实现IHttpHandler接口。

现在,要拥有AjaxHandler的单个实例,例如DocAjaxHander,PersonAjaxHandler等。如何在不注册每个* .ajax页面的情况下派生AjaxHandler类的基本AJAX处理?

3 个答案:

答案 0 :(得分:0)

您可以通过多种方式自动处理AJAX请求。以下是使用Web服务的方法:

http://www.asp.net/AJAX/Documentation/Live/Tutorials/ConsumingWebServicesWithAJAXTutorial.aspx

答案 1 :(得分:0)

嗯,一种方法是通过查询字符串参数...

答案 2 :(得分:0)

听起来你假设1 HttpHandler = 1 Page或1 Control,但据我所知,1 HttpHandler可以处理特定文件扩展名的所有页面。

你的问题不是很清楚,你对另一个回答者的回应是没有意义的......

“实际上,对我来说,似乎很像我在问Http处理程序,使用.ajax处理程序作为示例。”

但我会假设您正在考虑分别为“DocAjaxControl”和“PersonAjaxControl”创建“DocAjaxHander”和“PersonAjaxHandler”。我不认为这是必要的,1处理程序应该能够处理你所有的ajax请求,如果你选择这样做,但它不觉得我最直观的解决方案(使用HttpHandlers),无论如何,到细节...

每个IHttpHandler对象都需要实现:

public void ProcessRequest(HttpContext context)

允许:

context.Response.Write("Your JSON Response in here");

但是在'ProcessRequest()'级别,您无权访问创建ajax调用的控件实例,或访问保存控件的'System.Web.UI.Page'对象或任何内容

context.Request
救援!使用上面的Request对象,您可以读取QueryStrings,Sessions,您可以确定原始HttpRequest的路径(即PersonAjaxObject可以为其JSON数据对'myPersonobjPage.ajax'进行ajax调用,但是'.ajax'扩展位于请求您的自定义http处理程序和它的ProcessRequest方法。)

如果我是你,并且我打算使用HttpHandler进行我的ajax调用,我会使用查询字符串数据为我的处理程序提供足够的信息,以便知道'我响应的对象类型'以及'该对象请求的数据是什么'。

希望有所帮助。

相关问题