IRouteHandler クラスの GettHttpHandler メソッドでセッションを有効にしようとしていますが、セッションは常に null です。誰かが私が間違っていることを教えてもらえますか?
global.asax には
RouteTable.Routes.Add("All", new Route("{*page}", new MyRouteHandler()));
Session が null の MyRouteHandler クラスは次のようになります。
public class MyRouteHandler : IRouteHandler, IRequiresSessionState
{
public System.Web.IHttpHandler GetHttpHandler(RequestContext requestContext)
{
string test = HttpContext.Current.Session["test"].ToString();
return BuildManager.CreateInstanceFromVirtualPath("~/Page.aspx", typeof(Page)) as Page;
}
}
問題を示す小さなテストアプリを作成しました。
誰かが私が間違っていることを教えてもらえますか?
追加するために編集:
はい、ルート ハンドラにセッション データが必要です。多くの理由がありますが、簡単に説明できる理由の 1 つは、ユーザーがプレビュー モードでサイトを閲覧するように切り替えることができる場合です。
このサイトは、データベース内の動的ページ (/page1/page2...) の階層で構成されており、通常は公開またはプレビューできます。サイトを閲覧するコンテンツ プロデューサーは、通常のページだけを表示するか、プレビュー用に公開されたページも表示するかを選択できます。ブラウジング モードはユーザーのセッションに保存されるため、ルート ハンドラは要求されたページを解決できるようにブラウジング モードを知る必要があります。
だから私は本当にその段階ですでにセッションが必要です.