6

Mam aplikację sieci web ASP.NET MVC 4. Działa lokalnie, działa dobrze, ale na hoście internetowym (który korzysta z hostingu współdzielonego), zalogowany użytkownik jest często wylogowywany poprzez przekierowanie z powrotem na stronę główną. W większości przypadków użytkownik jest wylogowywany po wykonaniu tylko kilku czynności.Członkostwo ASP.NET MVC - użytkownik często wylogowywany - nie wiem dlaczego

Host sieciowy zasugerował, że moja aplikacja może zużywać zbyt dużo pamięci, ale użyłem programu do profilowania użycia pamięci i potwierdziłem, że nie używało nadmiernej ilości pamięci - w rzeczywistości aplikacja wydaje się używać ułamek przydzielonej pamięci na hoście internetowym.

Oto metoda logowania, który jest używany:

public static Boolean Login(string Username, string Password, bool persistCookie = false) 
    { 

     bool success = Membership.ValidateUser(Username, Password); 
     if (success) 
     { 
      FormsAuthentication.SetAuthCookie(Username, persistCookie); 
     } 
     return success; 
    } 

W moim hostingowego, timeout uwierzytelniania formularzy jest ustawiony na 60 minut, więc nie powinno być problemu, prawda?

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="60" /> 
</authentication> 

i moja wartość limitu czasu stan sesji jest również ustawiony na 60 minut:

<sessionState mode="InProc" customProvider="DefaultSessionProvider" timeout="60"> 

oparciu o odpowiedź here dodałem tej linii także, co nie wydaje się, aby rozwiązać ten problem:

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps"></machineKey> 

Jakieś pomysły na temat problemu i co mogę zrobić, aby rozwiązać problem?

Odpowiedz

1

Twoje sesje nie kończą się. IIS ulega awarii. Ponieważ używasz w sesjach pamięciowych, za każdym razem, gdy IIS ulega awarii, twoje sesje nie działają, a użytkownik zostaje wylogowany. Powinieneś sprawdzić widoki zdarzeń serwera i przejrzeć szczegóły błędów, aby dowiedzieć się, jaki jest błąd.

0

mogę ustawić timeout 2880 w timeout uwierzytelniania dla web.config i ja również ustawić sessionState przed zamknięciem system.Web

<sessionState timeout="1440"></sessionState> 

ten będzie utrzymywać sesję aktywny przez 24 godzin.

+2

Mam obecnie ustawione 60, co rozumiem przez 60 minut, co powinno zająć więcej czasu. Zwiększyłem wartość limitu czasu do większej liczby, aby zobaczyć, czy to by miało jakąkolwiek różnicę ... ale tak nie jest. –

+0

Ile czasu upływa, zanim upłynie limit czasu, lub czy wydaje się, że pochodzi z konkretnej strony lub kontrolera? –

+0

Powiedziałbym, że sesja użytkownika pozostaje ważna przez nie dłużej niż 1 lub 2 minuty ... czasem więcej, czasem mniej. Wydaje się, że nie ma znaczenia, który kontroler jest wywoływany. –

Powiązane problemy