Начал все шутить и увидел, что интерфейс IHttpHandler предоставляет RequestContext методу GetHttpHandler.
Итак, я изменил свой класс базовой страницы (я всегда помещал слой между System.Web.UI.Page и моими собственными страницами, называя его BasePage или аналогичным только для цели). Поэтому я добавил публичное свойство в PVBasePage для получения объекта RequestContext.
public RequestContext RequestContext { get; set; }
Тогда мой код класса маршрутизации выглядит следующим образом:
IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext)
{
// create the page object as my own page...
var page = BuildManager.CreateInstanceFromVirtualPath(VirtualPath
, typeof(PVBasePage)) as PVBasePage;
// pass in the request context
page.RequestContext = requestContext;
// return this page in the form of a IHttpHandler
return page as IHttpHandler;
}
Таким образом, вместо того, чтобы, как в примере кода, создавать экземпляр непосредственно как IHttpHandler, я создаю его как свою собственную страницу. Установите свойство контекста запроса, а затем верните страницу вызывающей стороне в качестве IHttpHandler.
Проверено и все работает. WOO HOO!
Затем на странице экземпляра вы можете нажать на коллекцию RequestContext.GetValues, чтобы прочитать переданные параметры.
НТН