HttpHandlerでServer.Transferを実行し、転送先のページでセッションを使用していると、
「セッション状態は、構成ファイルまたは Page ディレクティブで enableSessionState が True に設定されている場合に限り使用できます。」
と例外が発生してしまう。デバッガでHttpHandlerのソースを追うと、コンテキストに含まれるSessionオブジェクトが生成されていない。これをなんとかすりゃいいんじゃねーの?ということで、クラスにSystem.Web.SessionState.IRequiresSessionStateインターフェイスを追加してみる。
[C#]
public class TestHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
public TestHandler() {
}
public void ProcessRequest(HttpContext context) {
context.Server.Transfer("WebForm1.aspx");
}
public bool IsReusable {
get { return false; }
}
}
転送先のWebForm1.aspxでセッションを操作すると例外が発生していたが、インターフェイスを実装したら、問題なく実行できた。


コメント