2012-08-30 11 views
6

Mam aplikację MCV3 w służbie godaddy i sesja jest dość niestabilna.Dlaczego mam niestabilną sesję w aplikacji MVC3 z serwerami godaddy

Kiedy się zaloguję, działa dobrze, ale podczas nawigacji w aplikacji wylogowuje mnie, a odebranie mnie lub odświeżenie w aplikacji powoduje, że logujesz mnie w ten sposób (bez podawania danych uwierzytelniających lub czegokolwiek innego). Na moich zdalnych serwerach testowych i lokalnych działa dobrze.

Odpowiedz

11

To prawdopodobnie nie jest problem z sesją, ale raczej problem z plikiem cookie/biletem uwierzytelniającym. GoDaddy (najprawdopodobniej) ma zbilansowane obciążenie serwerów. Oznacza to, że aplikacja faktycznie istnieje na więcej niż jednym serwerze na raz.

W twoim web.config, jeśli nie definiujesz poprawnie atrybutu <machineKey>, to IIS tworzy klucz maszynowy dla ciebie. Każdy serwer, na którym działa aplikacja, utworzy własny klucz maszynowy, jeśli nie jest zdefiniowany przez Ciebie. W rezultacie jeden serwer może odszyfrować i odczytać bilet uwierzytelnienia, podczas gdy następny wniosek trafia do innego serwera, który nie może odszyfrować biletu uwierzytelniającego, ponieważ został zaszyfrowany innym kluczem i ten serwer uważa, że ​​nie jesteś zalogowany.

Aby rozwiązać ten problem, otwórz plik web.config i zdefiniuj atrybut <machineKey> i przeprowadź ponowne wdrożenie. Po zalogowaniu się w nowo wdrożonej aplikacji problem powinien zniknąć.

Forms authentication and Machine Key information on MSDN

Machine Key Generator (Najprawdopodobniej każdy będzie tu powinny używać wersji .NET 2.0, który jest generowany)

+1

nie mogę wyrazić siebie jak wdzięczny I am do siebie już teraz. Dziękuję Ci. To było to. – memeonline

+1

Epicki. Nie tylko jest to poprawne, ale jest wyjaśnione doskonale i szczegółowo. Bardzo miło, to też mi pomogło. –

Powiązane problemy