2010-04-26 13 views
8

Wenn ja; wo kann ich das bekommen?Gibt es einen Visual Studio-Debugger-Visualizer für die ASP.NET-Sitzung?

+0

Haben Sie erkennen, dass, wenn Sie einen Haltepunkt können Sie einfach das Direkt-Debugger-Fenster und geben ‚Page.Session‘ bringen es zu sehen? – slugster

+0

Ja. Ich hatte auf einen Visualizer gehofft, der mir eine strukturierte Sicht auf jedes in der Sitzung anwesende Objekt zeigen würde, auf eine magische Art und Weise, die es nicht erforderte, die Schlüssel, an denen ich interessiert war, zu beobachten. tief verschachtelten Legacy-Code zu entwickeln und einen Haltepunkt zu setzen, an dem ich interessiert bin, aber nicht bei jedem Session-Zugriff. –

Antwort

2

Haben Sie versucht this eins von Codeproject? Nach der Korrektur der Referenz auf Microsoft.VisualStudio.DebuggerVisualizers von Version 9.0 auf 10.0 funktionierte es in vs2010.

Installationsordner ist:

C:\Program files\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers

+0

Leider ist das SessionVisualizer-Fenster modal und nicht andockbar, aber hey es funktioniert! Hinweis: Ihre Sitzungsobjekte müssen serialisierbar sein, um die Daten im Viewer anzuzeigen, obwohl Sie den Namen und den Typ aller Objekte in der Liste sehen können. Praktisch! –

2

Peter, es ist besser, dass Sie den Sitzungszugriff zentralisieren.

public class SessionStateBag 
{ 
    private static string SessionPropertyXKey = "SessionPropertyX"; 
    public static int SessionPropertyX 
    { 
     get { return Session[SessionPropertyXKey]; } 
     set { Session[SessionPropertyXKey] = value; } 
    } 

    private static string SessionPropertyYKey = "SessionPropertyY"; 
    public static string SessionPropertyY 
    { 
     get { return Session[SessionPropertyYKey]; } 
     set { Session[SessionPropertyYKey] = value; } 
    } 

    // etc. Try to guess the type of the session property. If you cannot guess it; use object. 
} 

Im Rest des Codes, ersetzen Session [ "xxx"] mit einem der Eigenschaften von SessionStateBag oben.

Dies kann einen oder zwei Tage dauern, aber Sie haben Zugriff auf alle Sitzungen an einem Ort und Sie haben die Möglichkeit, Einblicke in das Labyrinth zu bekommen, das das Session-Objekt manchmal erstellt.

+0

Danke, aber das beantwortet die Frage nicht. Ich arbeite in einer großen Legacy-Codebase, wo dies nicht praktikabel ist, da es nur wenig Testabdeckung gibt. –

+0

Wie groß kann eine Codebasis sein, die das Suchen/Ersetzen nicht zu einem relativ einfachen Refactor macht? Zugegeben, das ist keine direkte Antwort auf die genaue Frage, aber scheint mir dies ein ausgezeichneter Vorschlag, um Ihnen zu helfen, Ihr Debugging zu verbessern. Ich arbeite selbst an einer ziemlich großen Codebasis, wenn das Sitzungsobjekt ein Problem für uns war (wir verwenden es nicht stark) Ich würde in Betracht ziehen, so etwas zu tun – DannykPowell

+0

Es ist nicht so groß wie die Codebasis nicht in _any_ eingewickelt ist Test-Coverage noch nicht. Die Chancen, einen Schlüssel zu verpassen, wo er zum Beispiel zusammengeheftet wurde, sind zu hoch. –

Verwandte Themen