我試圖添加一個非常基本的路由到Asp.Net Web窗體應用程序(在IIS 7下運行,集成模式):對於請求來http://mydomain.com/foo/我會喜歡顯示動態頁面的結果(http://mydomain.com/foopage.aspx)。Web窗體中的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;
}
的問題是,我RouteHandler的GetHttpHandler方法中,當前用戶(requestContext.HttpContext.User,System.Web.HttpContext.Current.User)的所有實例都爲空。可悲的是,foo.aspx需要知道當前用戶是什麼(對於登錄控件,角色等等),所以渲染頁面會引發空引用異常。我的猜測是,這些路由處理程序在Asp.Net有機會用用戶信息連接HttpContext之前觸發。任何想法的解決辦法?
PS - 我意識到這可以通過在頁面上執行Server.Transfer在http://mydomain.com/foo/default.aspx完成。我想使用這種路由,而不是讓一堆無用的文件夾混亂。
謝謝!