いくつかのフォームでユーザー入力を受け取るASP.NETWebアプリケーションがあります。ウィザードのようなものです。最初のフォームで、ユーザーは情報を入力し、[次へ]ボタンをクリックします。ボタンのClickイベントで、いくつかの情報をSessionオブジェクトに保存します(マスターページのプロパティを使用)。次に、次のページにリダイレクトします。
これが私がしていることの例です:
最初のページで...
protected void NextButton_Click(Object sender, EventArgs args)
{
//Go to the next form
Master.SessionVal1 = Value1;
Master.SessionVal2 = Value2;
Response.Redirect("~/TheNextPage.aspx", false);
}
MasterPage.csで。
public long Value1
{
get { return (long)Session["Value1"]; }
set { Session["Value1"] = value; }
}
public long Value2
{
get { return (long)Session["Value2"]; }
set { Session["Value2"] = value; }
}
かなり基本的なもの。VS2008でこれをデバッグモードで実行すると、完全に機能します。これをテストサーバー(IIS7)にプッシュすると、Sessionオブジェクトに格納されているValue1、Value2などにアクセスしようとするとNullReference例外が発生します。
更新: コードを1つのサーバーに移行すると、上記のような問題が発生することがわかりました。ただし、別のサーバーに昇格すると、期待どおりに機能します。
どちらのサーバーも、IIS7を搭載したWindowsServer2008です。アプリケーションプールの設定と状態管理の設定を確認しましたが、違いは見られません。