Asp.Net Web フォーム アプリ (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;
}
問題は、RouteHandler の GetHttpHandler メソッド内で、現在のユーザー (requestContext.HttpContext.User、System.Web.HttpContext.Current.User) のすべてのインスタンスが null であることです。悲しいことに、foo.aspx は現在のユーザーが何であるか (ログイン コントロール、ロールなど) を知る必要があるため、ページをレンダリングすると null 参照例外がスローされます。私の推測では、これらのルート ハンドラーは、Asp.Net がユーザー情報で HttpContext を接続する機会を得る前に起動していると思います。回避策のアイデアはありますか?
PS - これは、 http://mydomain.com/foo/default.aspxのページで Server.Transfer を実行することで実現できることを認識しています。役に立たないフォルダーがたくさんあるのではなく、この種のルーティングを使用したいと思います。
ありがとう!