3

私は ac# .net Web アプリケーションを持っています。セッション変数を作成しましたが、作成元のページを離れた後に読み取ろうとするとできません。

1 ページで作成

Session["UserName"] = "WhatEver";

それから私はします

Response.Redirect("~/whatever.aspx"); 

新しいページの Page_Load メソッドでセッション変数を読み込んでみます

string userName = Session["UserName"].ToString();

私は受け取りますObject reference not set to an instance of an object.

このエラーが表示されるのはなぜですか? 問題を解決するにはどうすればよいですか?

4

3 に答える 3

5

これは役立つかもしれません:

Response.Redirect("~/whatever.aspx",false);

この記事から:

これにより、スレッドが中止されないため、セッション トークンが節約されます。実際、このオーバーロードは RedirectFromLoginPage によって内部的に使用されます。

于 2012-10-27T17:11:42.670 に答える
0

私はまったく同じ問題を抱えていて、なんとかこの問題を克服しましたが、率直に言って、解決策を100%理解していません。とにかく、「Add New」からプロジェクトに「Global.asax」ファイルを作成しましたアイテム」メニュー。次のコードをグローバル ファイル内にコピー アンド ペーストするだけです。このファイル内のコードは次のとおりです。

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;

using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace ENTER_YOUR_NAMESPACE
{
    public class Global : System.Web.HttpApplication
    {
        void Application_Start(object sender, EventArgs e)
        {

        }

        void Application_End(object sender, EventArgs e)
        {
            /* Code that runs on application shutdown */
            Session_End(sender, e);
        }

        void Application_Error(object sender, EventArgs e)
        {

        }

        void Session_Start(object sender, EventArgs e)
        {

        }//end void Session_Start

        void Session_End(object sender, EventArgs e)
        {

        }//end void Session_End

    }//end class Global
}//end namespace
于 2013-03-21T15:12:53.070 に答える
0

ファイルsessionStateでオフになっている可能性がありますconfig

<sessionState mode="Off/> 

InProc[依存]に変更

<sessionState mode="InProc" timeout ="60" />
于 2012-10-27T17:16:02.380 に答える