Jak ustalić rozmiar sesji w ASP.NET z aplikacji internetowej?Jak sprawdzić rozmiar sesji w ASP.NET z aplikacji internetowej?
13
A
Odpowiedz
30
Jeśli próbujesz uzyskać rozmiaru sesji podczas wykonywania niż w debugowania śledzenia, może chcesz spróbować czegoś takiego:
long totalSessionBytes = 0;
BinaryFormatter b = new BinaryFormatter();
MemoryStream m;
foreach(var obj in Session)
{
m = new MemoryStream();
b.Serialize(m, obj);
totalSessionBytes += m.Length;
}
(Zainspirowany http://www.codeproject.com/KB/session/exploresessionandcache.aspx)
0
Myślę, że możesz znaleźć te informacje, dodając Trace = "true" do dyrektywy strony strony aspx. Następnie po załadowaniu strony możesz zobaczyć dużą liczbę szczegółów dotyczących żądania strony, w tym informacje o sesji.
Możesz również włączyć śledzenie w całej aplikacji, dodając wiersz do pliku web.config. Coś jak:
<trace enabled="true" requestLimit="10" pageOutput="true" traceMode="SortByTime"
localOnly="true"/>
16
Kod w powyższej odpowiedzi dawał mi ten sam numer. Oto kod, który w końcu zadziałał:
private void ShowSessionSize()
{
Page.Trace.Write("Session Trace Info");
long totalSessionBytes = 0;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter b =
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream m;
foreach (string key in Session)
{
var obj = Session[key];
m = new System.IO.MemoryStream();
b.Serialize(m, obj);
totalSessionBytes += m.Length;
Page.Trace.Write(String.Format("{0}: {1:n} kb", key, m.Length/1024));
}
Page.Trace.Write(String.Format("Total Size of Session Data: {0:n} kb",
totalSessionBytes/1024));
}
Powiązane problemy
- 1. Jak mogę włączyć obsługę plików cookie w aplikacji internetowej asp.net?
- 2. Jak sprawdzić przybliżony rozmiar aplikacji App w Xcode
- 3. Zmienna sesji Asp.net
- 4. Limit czasu sesji w ASP.NET
- 5. Zmiana domyślnego limitu czasu sesji aplikacji internetowej wiosennej
- 6. Usuń katalog z aplikacji ASP.NET wraca do nowej sesji
- 7. Maksymalny rozmiar sesji PHP
- 8. Dostawca sesji RavenDB ASP.NET?
- 9. Wydajność sesji ASP.NET
- 10. Uzyskaj identyfikator sesji w ASP.Net
- 11. Limit czasu sesji w ASP.NET
- 12. Jak zintegrować R w aplikacji internetowej
- 13. Stan sesji ASP.NET MVC
- 14. ASP.NET MVC: jak zapobiec blokadzie sesji?
- 15. Scenariusz przełączania awaryjnego dostawcy stanu sesji ASP.Net
- 16. Jak sprawdzić rozmiar kolekcji w JPA2
- 17. Przechowywanie sesji Asp.net
- 18. Problem z wątkiem C# w aplikacji internetowej
- 19. Czytanie kodów kreskowych z kamery internetowej w aplikacji internetowej PHP
- 20. Dane sesji ASP.Net utracone między stronami
- 21. W jaki sposób można sprawdzić autoryzację strony internetowej przy użyciu ASP.NET MVC?
- 22. Jak korzystać z SSL w aplikacji ASP.NET
- 23. tryb stanu sesji asp.net "SQLServer"
- 24. Monitorowanie obciążenia aplikacji ASP.NET
- 25. Uwierzytelnianie użytkownika bez stanu sesji w ASP.NET
- 26. Jak uzyskać stronę nadrzędną z Kontroli użytkownika w witrynie ASP.NET (nie aplikacji internetowej)?
- 27. Korzystanie z Wix, jak mogę wdrożyć jeden z kilku plików web.config podczas instalowania aplikacji internetowej ASP.net
- 28. Zapobieganie atakom słownikowym w aplikacji internetowej
- 29. Jak działa bezpieczna autoryzacja w aplikacji internetowej
- 30. Jak mogę używać profilu w aplikacji internetowej
Dzięki. Tego właśnie potrzebowałem. – GrZeCh
Potrzebowałem wprowadzić następujące zmiany: long totalSessionBytes = 0; ponieważ m.Length zwraca długi. Ale poza tym jest to miły, zwięzły kawałek kodu! Pętla może również zawierać foreach. ;-) – Oliver
@Oliver Dzięki za informację zwrotną. Wprowadziłem poprawki, które zasugerowałeś. Wygląda teraz trochę ładniej. – ddc0660