Mamy wymóg, w którym chcielibyśmy przekierować użytkownika na stronę logowania po wygaśnięciu sesji ASP.NET, a użytkownik pracuje w dodatku Silverlight.Limity sesji Silverlight, RIA i ASP.Net
Scenariusz jest taki, że mamy starszą aplikację, która uruchamia ASP.Net, wszystkie nasze nowe moduły są w Silverlight, a starsza aplikacja ładuje aplikację Silverlight. To wszystko działa :-) Następnie użytkownik odchodzi od swojego biurka i wraca po upływie czasu sesji ASP.Net, ale potem próbuje dalej coś robić w aplikacji Silverlight, która korzysta z usługi RIA Domain Service. Ponieważ sesja ma limit czasu, usługa domenowa RIA ulegnie awarii, ale nie kończy się niepowodzeniem z wyjątkiem SessionExpired, ani z nieprawidłowym użytkownikiem/hasłem, po prostu zawiedzie z wyjątkiem domeny, który jest podobny do "prawdziwych" wyjątków zgłaszanych w domenie model, więc nie mamy możliwości zidentyfikowania, że tym razem było tak, ponieważ sesja wygasła.
Istnieje wiele odpowiedzi na to, jak utrzymać sesję ASP.Net przy życiu, nie chcemy tego robić, chcemy, aby sesja wygasła, ale chcemy być w stanie obsłużyć ją z wdziękiem w Silverlight i skierować użytkownika do strona logowania.
Mamy to działa, ale problem występuje zawsze, gdy wyjątek jest zgłaszany w aplikacji Silverlight, przekierowuje cię to na stronę logowania, która nie jest zamierzonym zachowaniem. Chcemy przekierować tylko wtedy, gdy wygasa sesja.
Wszelkie pomysły?
Powinieneś zgłosić się do RegistrationWindow, zamiast próbować ponownie załadować stronę HtmlPage. To jest o wiele lepsza odpowiedź: http://stackoverflow.com/a/8083744/178620 –
Wielkie dzięki za wskazówkę. Masz rację, jeśli korzystasz z okna logowania/rejestracji Silverlight. Wolę używać uwierzytelniania formularzy asp.net i formularza internetowego HTML do logowania, ponieważ złośliwy użytkownik nie może pobrać aplikacji Silverlight bez logowania. W tych okolicznościach moja odpowiedź jest nadal poprawna i wolę ją od twojego rozwiązania. – slfan
Widzę, skąd przychodzisz - pytanie określa RIA i większość ludzi po prostu skorzysta z RegistrationWindow. Jeśli nie masz nic przeciwko aktualizacji odpowiedzi z twojej perspektywy, będę mógł odrzucić głosowanie w dół. –