Похоже, вы предполагаете, 1 HttpHandler = 1 страница или 1 элемент управления, но, как я понимаю, 1 HttpHandler может обрабатывать все страницы с определенным расширением файла.
Ваш вопрос не очень ясен, и ваш ответ другому ответчику не имеет смысла ...
"На самом деле, мне показалось, что я очень часто спрашивал обработчиков Http, используя в качестве примера обработчик .ajax."
Но я предполагаю, что вы думаете, что «DocAjaxHander» и «PersonAjaxHandler» должны быть созданы для «DocAjaxControl» и «PersonAjaxControl» соответственно. Я не думаю, что это будет необходимо, 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 может сделать ajax-вызов myPersonobjPage.ajax для своих данных JSON, но расширение .ajax вызывает запросите ваш собственный обработчик http и его метод ProcessRequest.)
Если бы я был вами, и я собирался использовать HttpHandler для своих вызовов ajax, я бы использовал данные строки запроса, чтобы предоставить обработчику достаточно информации, чтобы знать, «какой тип объекта я тоже отвечаю», а также «какие данные запрашивает этот объект».
Надеюсь, это поможет.