2011-02-04 16 views
8

W mojej aplikacji internetowej asp.net na ładowanie strony przechwytuję bieżący URL strony i zapisuję go w zmiennej sesji, aby śledzić stronę, na której znajduje się użytkownik, aby mogli wrócić do niej, jeśli wejdą obszar administracyjny, nawigacja itp. Mogą następnie kliknąć przycisk powrotu i zostaną przeniesieni na stronę, na której się znajdowali przed wejściem do administratora.Zmienna sesji zmieniona przez Chrome i FF

To wszystko działa w IE8; jednak w FF i Chrome, gdy w administratorze link powrotny przekierowuje do niestandardowej strony 404, którą mam dla aplikacji internetowej.

Dla celów testowych I dodaje kod napisałem poniżej w moim przypadku obciążenia strony:

Response.Write((string)Session["navurl"]);// displays "http://somedomain.com/customerror/default.aspx" 
Session["navurl"] = currentUrl;//ex. currentUrl = "http://somedomain.com/contact/" 
Response.Write((string)Session["navurl"]);//ex. currentUrl = "http://somedomain.com/contact/" 

Ponownie to działa bez problemu w IE, ale w FF i Chrome na stronie załadować zmienna sesji wyświetla 404 łącze do strony i po ustawieniu wyświetla poprawne łącze. Użyłem skrzypka, aby zobaczyć, co się dzieje, a Chrome rzuca 404 w nagłówku GET dla pliku favicon.ico, którego nie używam w tej aplikacji internetowej.

Dodałem plik faviocon i link w nagłówku pliku site.master, a Chrome i FF działają poprawnie; Nadal nie jestem pewien, dlaczego tak się dzieje. Ktoś ma pomysły, dlaczego lub jak moja zmienna sesji jest nadpisywana przez Chrome lub FF?

Jako notatkę boczną przeszedłem przez debugowanie procesu, a currentUrl to właściwy adres URL.

+0

chce favicon pokazać na karcie, ale dlaczego to zatrzymanie po 404 w FF i chrome ... Myślę, że masz inny problem, którego nie identyfikujesz. Czy jest to przestarzały problem z pamięcią podręczną? Oboje ciężko buforują pamięć podręczną. – jcolebrand

+0

Czy przypadkiem używasz uwierzytelniania formularzy lub innego NTLM? Zauważyłem, że czasami zdarzają się zabawne rzeczy w F/Chrome, a nie w IE – DarylChymko

Odpowiedz

0

Po uzyskaniu dostępu do administratora, zachowujesz sesję? Korzystając z Fiddlera widziałeś już inne żądanie swojej strony? Poszukaj tagów graficznych za pomocą src = "" lub iframe.

Sesję var należy ustawić na każdej stronie początkowej, ale nigdy nie należy jej ustawiać na stronach administracyjnych, a jedynie budować link "Wstecz". Jeśli używasz zdarzeń Global.asax, staraj się unikać zmiany var podczas serwowania stron administracyjnych.

1

Cóż, jeśli korzystasz z obsługi .NET do obsługi wszystkich stron (tj. Wszystkich rozszerzeń plików), to sensowne jest, gdy twoja przeglądarka złożyć wniosek o favicon.ico (google, aby zrozumieć, co to jest) , serwer nie może go znaleźć, i przekierowuje do 404. Który z kolei modyfikuje zmienną Sesji jako "ostatnią obsługiwaną stronę": 404.

Teraz, kiedy wyrenderujesz stronę admin i zapytaj o sesję za " ostatnia strona była "co otrzymujesz? "404".

sugeruję sprawdzenie adresu URL, aby sprawdzić czy reffers do strony użytkownika navigationable przed zapisaniem go w sesji

if (IsAUserPage(currentUrl) 
    Session["navurl"] = currentUrl; 
Powiązane problemy