1

原因を特定するのが困難なエラーが発生しました。表示されるエラーメッセージは、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」です。私はそれが何を言っているのか理解し、NULLであるオブジェクトを見つけましたが、それが発生している理由を特定することはできません。

アプリケーションはASP.NET4.0アプリです。ログイン後、システムはSession_Start()で設定されたアプリケーション変数をチェックします。変数がnullであり、このエラーが発生します(表示される完全なエラーメッセージについては、以下を参照してください)。

これは、32ビット仮想マシンでのみ発生することがわかりました。テストしたものは次のとおりです。

  • XP仮想-サーバーエラー
  • XP非仮想-動作します
  • 200332ビット仮想-サーバーエラー
  • 200332ビット非仮想-動作します
  • 200864ビット非仮想-動作します
  • 200832ビット仮想-サーバーエラー
  • 200864ビット仮想-動作します

プロジェクト全体を仮想マシンに移動してテストし、VS2010Expressを使用してコンパイルしました。その後、アプリケーションは正しく機能しました。その後、アプリケーションは正しく機能しました。したがって、このアプリケーションが32ビット仮想マシンでプリコンパイルされている場合、NullReferenceExceptionエラーが表示されるようです。

これはほとんどのマシンで機能することが証明されているため、コードではないと確信しています。今何をチェックする必要がありますか?仮想マシンにインストールされていないものはありますか?探したり試したりすることの提案をいただければ幸いです。何かを明確にしたり、より多くの情報を提供したりする必要がある場合は、私に知らせてください。

'/TestSite'アプリケーションのサーバーエラー。オブジェクト参照がオブジェクト インスタンスに設定されていません。説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。

例外の詳細:System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

ソースエラー:

現在のWebリクエストの実行中に、未処理の例外が生成されました。例外の発生源と場所に関する情報は、以下の例外スタックトレースを使用して識別できます。

スタックトレース:

[NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。]
HomeMasterPage.Page_Load(オブジェクト送信者、EventArgs e)+204
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp、Object o、Object t、EventArgs e)+ 14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender、EventArgs e)+35
System.Web.UI.Control.OnLoad(EventArgs e)+91
System.Web.UI.Control.LoadRecursive()+74 System.Web .UI.Control.LoadRecursive()+146 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint、Boolean includeStagesAfterAsyncPoint)+2207

バージョン情報:Microsoft .NET Frameworkバージョン:4.0.30319; ASP.NETバージョン:4.0.30319.1

コメント後に更新

void Application_Start(object sender, EventArgs e) 
    {
        // Code that runs on application startup
        ArrayList ArrActiveUser = new ArrayList();
        Application["ArrActiveUser"] = ArrActiveUser;
    }

...


    void Session_Start(object sender, EventArgs e) 
    {
        // Code that runs when a new session is started
        ArrayList ActiveUsers = new ArrayList(); 
        if (Application["ArrActiveUser"] != null)
        {
            ActiveUsers = (ArrayList)Application["ArrActiveUser"];
        }
        ActiveUsers.Add(Session.SessionID);
        Application["ArrActiveUser"] = ActiveUsers;
    }
4

1 に答える 1

0

ステートサーバーを使用していますか? セッション状態が inProc でない限り、Session_Start / Session_End が起動されることはありません。

于 2012-07-31T16:31:37.663 に答える