私は、既存のasp.net(MVC)アプリケーション内のセッション状態のすべての使い方をすばやく見つける方法について、すばらしいアイデアを探しています。セッション状態のすべての使用を見つける
問題のアプリケーションは、アウトソーシング開発の対象であり、運用上問題なく動作しています。しかし、私たちは最近、(私たちの優先ルート)StateServerではなく、InProcセッション状態を使用していることに気付きました。
小規模なテストでは、StateServerに切り替えて正常に動作しました。しかし、プロダクションに導入すると、突然多くのエラーが発生しました。これらのエラーがこの変更によって引き起こされたかどうかは確かではありませんが(実際にはデータベースレベルの問題について不平を言っていました)、変更を削除するとアプリケーションが再び機能することができました(これはリサイクルが発生したためです)。
セッションを再開する前に、セッションに配置されているすべてのオブジェクトの徹底的な監査を実行したいと思います(これまでコントローラをいくつか簡単に見てみました。コードを完全に制御できたら、クラスをコメントアウトして(セッションクラスに到達するさまざまな方法をコンパイルして見つける)、アクセサをコメントアウトしてコンパイルして訪問します各エラーしかし、.NETフレームワークの組み込み型ではこれを行うことはできません。
だから、それぞれの使い方を見つけるにはどのようなスマートなアイデアですか?
私は反射板を使用しようと決めました。
System.Web.HttpSessionStateBase.set_Item(String, Object) : Void
System.Web.SessionState.HttpSessionState.set_Item(String, Object) : Void
System.Web.SessionState.HttpSessionState.set_Item(Int32, Object) : Void
System.Web.HttpSessionStateBase.set_Item(Int32, Object) : Void
System.Web.HttpSessionStateBase.Add(String, Object) : Void
System.Web.SessionState.HttpSessionState.Add(String, Object) : Void
(ここではどこにでもTempDataを使用していないことを確認しています)。私はアイテムがセッションに終わることができる他の経路を見逃していますか?
あなたはインプロセスプロバイダをラップし、独自のSessionStateプロバイダを作ることができますが、http://msdn.microsoft.com/en-us/library/ms178587.aspx、追加取得し、削除するためにすべての呼び出しを記録します。こうすることで、コールスタックを使用してコード内のセッションの使用状況をすべて追跡できます。 –