Mam aplikację, która ma pewne działania kontrolera wywołujące wolne usługi stron trzecich. Te działania są wywoływane za pomocą wywołań AJAX ze strony.ASP.NET MVC: jak zapobiec blokadzie sesji?
Mogę używać kontrolerów async do uwolnienia puli wątków ASP.NET, to świetnie. Ale co z sesją? Jeśli korzystam z sesji InProc i prośba o "powolną akcję", dany użytkownik nie może złożyć żadnego wniosku do aplikacji, ponieważ jego sesja jest blokowana przez pierwsze "wolne" połączenie.
W PHP istnieje metoda session_write_close()
które można używać w następujący sposób:
- Zebrane żądanie użytkownika do wolnoprzełączające
- Sprawdź praw użytkownika, aby uzyskać dostęp do kontrolera/działania na podstawie danych sesji
- Napisz coś do sesji w razie potrzeby
- Zadzwoń pod
session_write_close()
. Od tej sesji punkt jest zamknięty przez ten wniosek i wszelkie inne wniosek ten sam użytkownik może uzyskać dostęp - Bądź moją powolną wezwanie (być może w pewnym asynchroniczny sposób)
wiem, że mogę wyłączyć stanu sesji na poziomie kontrolera przy użyciu atrybutu [SessionState]
, ale to nie jest rozwiązanie.
Wszelkie pomysły?
Dlaczego sądzisz, że sesja jest „zablokowany” przez jakiekolwiek żądanie? –
Oto szczegóły: http://stackoverflow.com/questions/3666556/a-nonlocking-in-process-asp-net-session-state-store, a tutaj kolejne moje pytanie na podobny temat: http: // stackoverflow.com/questions/2438493/the-whole-site-is-blocked-while-one-page-is-waiting-for-blocking-operation-php – artvolk
Oto ostateczny opis: http://stackoverflow.com/ pytania/3629709/i-właśnie-odkryto-dlaczego-wszystkie-strony-asp-net-są-powolne-i-am-próbuje-pracować-out – artvolk