Я пытаюсь добавить довольно простой маршрут в приложение Asp.Net Web Forms (работает под IIS 7, интегрированный режим): для запросов, поступающих в http://mydomain.com/foo/ Я бы как показать результаты динамической страницы (http://mydomain.com/foopage.aspx).IRouteHandler в веб-формах: запросы на маршрутизацию, требующие HttpContext.User
Я создал 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. Я хотел бы использовать маршрутизацию для такого рода вещей, а не иметь кучу бесполезных папок, загромождающих вещи.
Спасибо!