Я пытаюсь добавить довольно простой маршрут в приложение Asp.Net Web Forms (работает под управлением IIS 7, интегрированный режим): для запросов, поступающих на http://mydomain.com/foo/, я хотел бы показать результаты динамическая страница (http://mydomain.com/foopage.aspx).
Я создал RouteHandler, который делает все это, и кажется, что он правильно маршрутизирует.
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
var page = System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("~/foo.aspx", typeof(MyApp.Web.Foo)) as MyApp.Web.Foo;
return page as IHttpHandler;
}
Проблема в том, что в методе GetHttpHandler моего RouteHandler все экземпляры текущего пользователя (requestContext.HttpContext.User, System.Web.HttpContext.Current.User) равны нулю. К сожалению, foo.aspx должен знать, кто является текущим пользователем (для элементов управления входом в систему, для ролевой работы и т. Д.), Поэтому при рендеринге страницы выдается исключение нулевой ссылки. Я предполагаю, что эти обработчики маршрутов срабатывают до того, как Asp.Net получит возможность связать HttpContext с информацией о пользователе. Есть идеи обойти?
PS - я понимаю, что это можно сделать, выполнив Server.Transfer на странице по адресу http://mydomain.com/foo/default.aspx. Я бы хотел использовать маршрутизацию для такого рода вещей, а не с кучей бесполезных папок, загромождающих вещи .
Спасибо!