Odhlašování uživatelů - Ověření formulářů se pro požadavek nezdařilo.
-
2009年8月28日 上午 08:02
Provozuji ASP.NET 2.0 aplikaci, ke které se uživatelé přihlašují klasicky přes formulář. Můj problém spočívá v náhodném občasném odhlašování uživatelů. Najednou nejsou odhlášeni všichni uživatelé, ale vždy pouze nějaký z aktuálně přihlášených uživatelů.
Odhlášení uživatele je zalogováno s následujícím záznamem v logu:
Event code: 4005
Event message: Forms authentication failed for the request. Reason: The ticket supplied has expired.
Event time: 8/28/2009 9:39:48 AM
Event time (UTC): 8/28/2009 7:39:48 AM
Event ID: 23ceff4b7769472894998f1c74ae751e
Event sequence: 6087
Event occurrence: 56
Event detail code: 50202
Application information:
Application domain: /LM/W3SVC/1/Root/PROFA-1-128958985290921518
Trust level: Full
Application Virtual Path: /
Application Path: C:\Inetpub\wwwroot\
Machine name: PROFA
Process information:
Process ID: 3972
Process name: w3wp.exe
Account name: PROFA\web
Request information:
Request URL: http://localhost/event.aspx
Request path: /event.aspx
User host address: 10.0.0.1
User:
Is authenticated: False
Authentication Type:
Thread account name: PROFA\web
Name to authenticate:
Custom event details:For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Aplikace je provozována na Windows Server 2003 s IIS 6.0 a .NET Frameworkem 2.0.50727. Server není konfigurován pro práci ve farmě - uživatelé přistupují pouze k jednomu serveru. V rámci IIS serveru je však provozováno více nezávislých aplikací.
Z web.configu vybírám dle mého zajímavé a podstatné údaje:
<machineKey validationKey="xxx" validation="MD5" decryptionKey="xxx" />
<authentication mode="Forms">
<forms loginUrl="Login.aspx" protection="All" slidingExpiration="true" timeout="30" />
</authentication><sessionState mode="InProc" cookieless="false" timeout="30" />
Neřešil jste prosím někdo podobný problém, resp. máte nějaké nápady, jak analyzovat a řešit tento problém?Předem všem děkuji za jakékoliv náměty.
所有回覆
-
2010年2月17日 下午 07:25版主
Nevzpomínám si, že bych se s tou chybovou hláškou přímo setkal, nicméně evidentně se authentizačnímu modulu dostane authentizační ticket, který již expiroval. U Vašeho nastavení lze předpokládat, že máte authentizační ticket standardně uložen v cookie, tedy bych si ověřil, že dochází k automatickému prodlužování platnosti authentizačního ticketu (v requestu, který je zhruba po polovině doby platnosti ticketu, 15 minutách, by měl Váš uživatel dostat novou authentizační cookie - s prodlouženou expirací v ní obsaženého authentizačního ticketu).
Taky bych ověřil scénář použití, jestli vůbec má šanci ten authentizační ticket se včas prodloužit, tedy především že vůbec v době platnosti authentizačního ticketu proběhne nějaký regulérní request uživatele na webový server (nemáte tam samý AJAX, nebo Silverlight, nebo něco takového?).
Robert Haken, Microsoft MVP ASP/ASP.NET, HAVIT, s.r.o., www.havit.cz, http://knowledge-base.havit.cz- 已標示為解答 Robert HakenMVP, Moderator 2010年2月17日 下午 07:38

