Szukam inteligentnych pomysłów, w jaki sposób szybko znaleźć wszystkie wykorzystanie stanu sesji w istniejącej aplikacji asp.net (MVC).Znaleźć wszystkie wykorzystanie stanu sesji
Wniosek ten był przedmiotem outsourcingu rozwoju i działał dobrze w produkcji. Ale niedawno zdaliśmy sobie sprawę, że używa on stanu sesji InProc zamiast (naszej preferowanej trasy) StateServer.
W teście na małą skalę przełączyliśmy ją na StateServer i wszystko działało dobrze. Jednak po wdrożeniu do produkcji nagle doświadczyliśmy dużej liczby błędów. Nie jestem pewien, czy te błędy były spowodowane przez tę zmianę (w rzeczywistości narzekały na problemy z poziomem bazy danych), ale usunięcie tej zmiany pozwoliło aplikacji ponownie działać (prawdopodobnie dlatego, że spowodowało ponowne uruchomienie).
Zanim spróbuję ponownie włączyć, chciałbym przeprowadzić dokładny audyt wszystkich obiektów umieszczonych w sesji (wcześniej wcześniej spojrzałem na kilka kontrolerów i wydawało się, że wszystko w porządku). Gdybym miał pełną kontrolę nad kodem, to jest to miejsce, w którym chciałbym tylko skomentować klasę (aby skompilować i znaleźć różne sposoby dotarcia do klasy sesji), a następnie skomentować akcesorów, kompilować i odwiedzić każdy błąd. Ale nie mogę tego zrobić z wbudowanymi typami frameworków .NET.
Jakiekolwiek inteligentne pomysły, jak znaleźć każde użycie?
Postanowiłem spróbować użyć Reflektora. Mam przeanalizował „użytkownik” dla każdej z następujących grup:
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
(i sprawdzeniu, że nie używamy TempData gdziekolwiek). Czy brakuje mi innych tras, na których przedmioty mogą znaleźć się w Sesji?
można zrobić własną dostawcy sessionState która otacza dostawcy InProc, ale rejestruje każdą rozmowę do dodawania, usuwania i dostać http://msdn.microsoft.com/en-us/library/ms178587.aspx . W ten sposób możesz użyć stosu połączeń do śledzenia każdego użycia sesji w kodzie. –