DetailPage-MSS-KB

Knowledge Base

Artikel ID: 910439 - Laatste beoordeling: donderdag 30 mei 2013 - Wijziging: 3.0

 
ASP .NET ondersteuning Voice kolom

Deze kolom aan uw behoeften aanpassen, willen we nodigen u uit uw ideeën over onderwerpen die interessant zijn voor u en problemen die u wilt zien in toekomstige gericht Knowledge Base-artikelen en ondersteuning voor Voice kolommen indienen. Indienen van uw ideeën en feedback met behulp van de Vragen om (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) met dit formulier. Er is ook een koppeling naar het formulier onderaan in deze kolom.

Op deze pagina

Welkom bij de kolom ASP.NET ondersteuning stem! Mijn naam is Jerry Opstal. Ik zijn met Microsoft over 5 jaar en de meeste hebben besteed mijn tijd gericht op Web-gerelateerde technologieën, zoals Microsoft FrontPage en de nieuwe Microsoft SharePoint-technologieën. Ik bezig geweest met het laatste jaar werken met Microsoft ASP.NET als een ondersteuningstechnicus. De stem van de ondersteuning van deze maand kolom, ga ik wordt uitgelegd hoe problemen Forms-verificatie in Microsoft ASP.NET.

Wanneer gebruikt u Forms-verificatie in een ASP.NET-toepassing Misschien vindt u het oplossen van een probleem dat optreedt wanneer de gebruiker nodig willekeurig omgeleid naar de aanmeldingspagina. In een ideale wereld, dit probleem zou optreden op een manier waarmee u gemakkelijk toevoegen een foutopsporing en het vastleggen van het probleem. In een productieomgeving is dit echter zelden het geval. Een willekeurige probleem wilt oplossen, moet u zich aanmelden informatie met betrekking tot het probleem, zodat u het toegangspunt kunt beperken veroorzaken.

In deze kolom kort komen de Concept voor Forms-verificatie. Bekijken we vervolgens in welke scenario 's leiden tot een gebruiker wordt omgeleid naar de aanmeldingspagina en vastleggen van gegevens die relevant is voor het probleem te isoleren. Het implementeren van een interface IHttpModule de logboekgegevens Forms-verificatie ook komen.

Forms-verificatie-overzicht

Wanneer een gebruiker wordt geverifieerd op een website met behulp van Forms-verificatie een cookie wordt gemaakt met de server. De waarde van de cookie is een verificatieticket gecodeerde formulieren. De cookie wordt doorgegeven aan de server op elk verzoek om te de toepassing en de klasse FormsAuthenticationModule de cookiewaarde decodeert en Hiermee bepaalt u of de gebruiker al dan niet geldig is.

Standaard wordt de FormsAuthenticationModule klasse wordt toegevoegd aan het bestand Machine.config. De klasse FormsAuthenticationModule beheert de FormsAuthentication.

Het volgende is een fragment uit het bestand Machine.config:
<httpModule>
     …other modules…
     <add name="FormsAuthentication"
         type="System.Web.Security.FormsAuthenticationModule" />
     …other modules…
</httpModule>
De algemene HTTP-verkeer voor de verificatie met behulp van Forms-verificatie lijkt op de volgende:
  1. De client stuurt een HTTP GET op Default.aspx. Geen formulieren verificatiecookie wordt verzonden.
  2. De server stuurt een antwoord 302 (redirect) naar Login.aspx.
  3. De client stuurt een HTTP POST naar Login.aspx. Het bevat de gegevens voor aanmelding.
  4. De server stuurt een antwoord 302 (redirect) op Default.aspx. De verificatiecookie formulieren is opgenomen.
  5. De client stuurt een HTTP GET op Default.aspx. Dit omvat de verificatiecookie formulieren.
Voor meer informatie over het implementeren en gebruiken Forms-verificatie, gaat u naar de volgende MSDN-websites:
http://msdn2.Microsoft.com/en-us/library/7t6b43z4.aspx (http://msdn2.microsoft.com/en-us/library/7t6b43z4.aspx)
http://msdn2.Microsoft.com/en-us/library/System.web.Security.formsauthentication (vs.71) .aspx (http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication(vs.71).aspx)
http://msdn2.Microsoft.com/en-us/library/System.web.Security.formsauthenticationticket (vs.71) .aspx (http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket(vs.71).aspx)
Ga naar de volgende ASP.NET-website voor meer informatie over het delen van formulieren verificatiecookies:
http://QuickStarts.ASP.NET/QuickStartv20/ASPNET/doc/Security/formsauth.aspx (http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/formsauth.aspx)

Redenen dat een gebruiker wordt omgeleid naar de aanmeldingspagina

De verificatiecookie formulieren verloren is gegaan

Scenario 1

In dit scenario wordt een gebruiker zich aanmeldt op de website. Op een bepaald moment verzendt de client een aanvraag naar de server en de Klasse FormsAuthenticationModule ontvangt niet de cookie. U kunt Als een aanvraag niet de cookie bevat door het inschakelen van cookies bepalen logboekregistratie in Microsoft Internet Information Services (IIS). Ga hiervoor als volgt te werk:
  1. Open de IIS Microsoft Management Console (MMC).
  2. Klik met de rechtermuisknop op de website en klik vervolgens opEigenschappen.
  3. Klik op de Website tabblad en klik vervolgens op Inschakelen Logboekregistratie.
  4. Zorg ervoor dat de indeling voor logboekbestanden W3C Extended Log File Indeling.
  5. Klik op Eigenschappen.
  6. Klik op de Geavanceerde tabblad en klik vervolgens opUitgebreide eigenschappen.
  7. Onder Uitgebreide eigenschappen, klik op de Cookie(CS(cookie)) selectievakje en de Verwijzende site (cs(Referer)) selectievakje in.
Als dit probleem optreedt, bepalen welke client had de probleem en van de client-IP-adres. Het IIS-logboek van de client IP-adres filteren en bekijk de cookie> kolom.

Opmerking Log Parser kunt u de IIS-logboeken worden geparseerd. Log Parser downloaden, gaat u naar de volgende Microsoft-website:
http://www.Microsoft.com/downloads/details.aspx?FamilyId=890cd06b-abf8-4c25-91b2-f8d975cf8c07 (http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07)
Nadat u de lijst met aanvragen van dat specifieke hebt gebruiker zoeken voor de aanvragen naar de aanmeldingspagina. U weet dat ze zijn omgeleid. op deze pagina en u wilt zien de aanvragen voordat de omleiding is opgetreden. Als u iets dergelijks aan de volgende, de client ziet hetzij heeft de cookie of de cookie is verwijderd op het netwerk tussen de client niet verzonden en server.

Dit is de eerste aanmelding.
Deze tabel samenvouwenDeze tabel uitklappen
MethodePaginaReactieCookies
GET/ Default.aspx302 (Redirect)Nee Cookies
GET/Login.aspx200 (Voltooid)Nee Cookies
BOEKEN/Login.aspx302 (Redirect)Nee Cookies
GET/ Default.aspx200 (Voltooid).ASPXAUTH
GET/SomePage.aspx302 (Redirect)Nee .Cookie ASPXAUTH
Dit zijn andere aanvragen, gevolgd door een aanvraag naar een pagina op de site zonder de.ASPXAUTH-cookie.
Deze tabel samenvouwenDeze tabel uitklappen
MethodePaginaReactieCookies
GET/SomePage.aspx302 (Redirect)Nee .Cookie ASPXAUTH
GET/Login.aspx200 (Voltooid)Nee .Cookie ASPXAUTH
BOEKEN/Login.aspx302 (Redirect)Nee .Cookie ASPXAUTH
GET/SomePage.aspx200 (Voltooid).ASPXAUTH

Opmerking Het eerste verzoek van die gebruiker is niet waarschijnlijk een formulieren verificatiecookie tenzij u een permanente cookie maakt. Het IIS-logboek alleen leert u de cookies die in het verzoek ontvangen. Het eerste verzoek om de verificatiecookie formulieren worden op de aanvraag na een geslaagde aanmeldingspoging.
Scenario 2

De verificatiecookie formulieren kan ook worden verloren bij overschrijding van de limiet van de cookie van de client. In Microsoft Internet Explorer, is er een limiet van 20 cookies. Nadat de twintigste cookie is gemaakt op de client, worden vorige cookies verwijderd uit een van de client collectie. Als de.ASPXAUTH-cookie wordt verwijderd, de gebruiker wordt omgeleid naar de aanmeldingspagina wanneer de volgende aanvraag wordt verwerkt.

U kunt deze scenario's op dezelfde manier oplossen. Zoek alleen op verzoek voordat de omleiding naar de aanmeldingspagina. Als het verzoek om deze pagina wordt gegenereerd cookies, dit is iets om te onderzoeken.

Voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken:
306070  (http://support.microsoft.com/kb/306070/ ) Limiet voor aantal en grootte van cookies in Internet Explorer

U kunt Fiddler de HTTP-headers weergeven die naar de client worden verzonden. Nadat u het netwerkverkeer vastleggen, dubbelklikt u op een verzoek en klik vervolgens op Berichtkoppen overzicht van de header Set-Cookie. Als u een Inloggen gelukt, ziet u de header Set-Cookie in de reactie van een Inloggen gelukt.

Fiddler downloaden, gaat u naar de volgende website van Fiddler:
http://www.fiddlertool.com/fiddler/ (http://www.fiddlertool.com/fiddler/)
Scenario 3

Nadat de aanvraag de client blijft, zijn er verschillende lagen dat kan van invloed zijn op de pakketten die worden verzonden. Om te bepalen of een netwerkapparaat de cookie verwijdert, hebt u een netwerk-trace op de client en de server vastleggen en kijkt u vervolgens in het hoofdgedeelte van de aanvraag voor de cookie. U wilt Kijk naar de aanvraag van de client om ervoor te zorgen dat de cookie is verzonden en de server controleren tracering om ervoor te zorgen dat de server het cookie ontvangen.

Clientaanvraag

Dit is een GET-verzoek nadat de gebruiker is geverifieerd. De Forms-verificatie ticket informatie is blauw gemarkeerd. Dit wordt bevestigd dat de cookie-informatie van de client links. Als u werkt met een netwerk maken gereedschap, zoals Netmon, ziet u het verkeer dat daadwerkelijk hebben doorlopen de adapter.
47 45 54 20 68 74 74 70-3a 2f 2f 6c 6f 63 61 6c   GET http://local
68 6f 73 74 2f 46 6f 72-6d 73 41 75 74 68 4c 6f   host/FormsAuthLo
67 54 65 73 74 2f 57 65-62 46 6f 72 6d 31 2e 61   gTest/WebForm1.a
73 70 78 20 48 54 54 50-2f 31 2e 31 0d 0a 41 63   spx HTTP/1.1..Ac
63 65 70 74 3a 20 69 6d-61 67 65 2f 67 69 66 2c   cept: image/gif,
…Other headers of the GET request…
63 68 65 0d 0a 43 6f 6f-6b 69 65 3a 20 2e 41 53   che..Cookie: .AS
50 58 41 55 54 48 3d 33-43 45 46 39 42 39 41 30   PXAUTH=3CEF9B9A0
43 33 37 41 44 46 36 33-45 36 42 44 33 37 42 36   C37ADF63E6BD37B6
39 43 44 41 32 35 30 30-30 46 38 30 37 32 38 46   9CDA25000F80728F
35 31 43 39 35 36 36 44-31 34 43 35 34 31 34 35   51C9566D14C54145
38 31 43 39 33 45 32 41-30 31 44 44 43 44 45 46   81C93E2A01DDCDEF
32 34 41 31 37 34 32 39-34 31 30 43 30 39 37 34   24A17429410C0974
42 33 45 43 42 30 36 34-32 32 38 45 33 35 33 39   B3ECB064228E3539
39 41 38 32 32 42 33 42-39 33 36 44 46 30 38 46   9A822B3B936DF08F
42 41 42 44 33 45 31 30-32 44 30 30 32 31 30 43   BABD3E102D00210C
32 45 31 33 39 38 30 37-39 42 32 33 35 32 39 46   2E1398079B23529F
34 46 35 44 37 34 41 3b-20 50 72 6f 66 69 6c 65   4F5D74A; Profile
3d 56 69 73 69 74 6f 72-49 64 3d 62 32 34 65 62   =VisitorId=b24eb
Server-side-aanvraag

Wanneer u bekijkt de aanvraag die de server bereikt u gewenste Zorg ervoor dat de server dezelfde informatie ontvangen die de de client is verzonden. Als de server niet dezelfde informatie hebt ontvangen, moet u bij het onderzoeken van andere apparaten op het netwerk om te bepalen waar de cookie is verwijderd.

Opmerking Er zijn ook exemplaren van ISAPI-filters verwijderen van cookies. Als u bevestigt dat de webserver de cookie ontvangen, maar de cookie niet wordt vermeld. Controleer de ISAPI-filters in de IIS-logboeken. Mogelijk moet u de filters om te zien of verwijdert de probleem is opgelost.

De formulieren verificatieticket time-out

De waarschijnlijke oorzaak voor een gebruiker wordt omgeleid als de Forms-verificatie ticket is verlopen. De verificatie van formulieren ticket kan een time-out op twee manieren. Het eerste scenario treedt op als u absolute vervaldatum. Met absolute vervaldatum, de verificatieticket verloopt als de verlooptijd verloopt. Bijvoorbeeld het instellen van een vervaldatum van 20 minuten en de gebruiker de site bezoekt om 2:00 uur. De gebruiker wordt omgeleid naar de aanmeldingspagina als de gebruiker bezoekt de site na 2:20 PM.

Als u een verschuivende vervaldatum gebruikt de scenario is iets ingewikkelder. De cookie en de resulterende ticket bijgewerkt als de gebruiker de site bezoekt na de verlooptijd half verlopen is. U kunt bijvoorbeeld een geldigheidstermijn van 20 minuten instellen via verschuivende vervaldatum. Een gebruiker de site bezoekt om 2:00 uur en ontvangt de gebruiker een cookie die is ingesteld op 2:20 PM laten verlopen. De vervaldatum wordt alleen bijgewerkt als de gebruiker de site na 2:22:00 bezoekt. Als de gebruiker de site op 2:09 PM bezoekt, het ticket is niet bijgewerkt omdat de helft van de verlooptijd is niet verlopen. Als de gebruiker vervolgens wacht 12 minuten bezoeken aan de site at 2:21 PM kan het ticket is verlopen. De gebruiker wordt omgeleid naar de aanmelding pagina.

Een manier om de benadering van dit soort probleem is aan te melden van de formulieren verificatie-cookie en ticket informatie. Op deze manier kunt u zien als de cookie is ontvangen door IIS en de waarden. U kunt dit doen door te schrijven een HttpModuleen die module vervolgens sluit aan op de aanvraag-pipeline. U hebt geen code om de gegevens van uw toepassing aanpassen u nodig.

De bijgevoegde voorbeeld werkt in Microsoft .NET Framework 1.1 en .NET Framework 2.0 en heeft opmerkingen in. De steekproef omvat de volgende bestanden:
  • FormsAuthEvents.cs: De klasse die IHttpModule implementeert en bindt in de gebeurtenis Application_BeginRequest .
  • FormsAuthInfo.cs: De klasse die de cookie haalt en decodeert het ticket forms-verificatie. Controleert ook of van de toepassing Het bestand web.config om ervoor te zorgen dat forms-verificatie is ingeschakeld.
  • FormsAuthConfig.cs: De klasse die gegevens van leest de FormsAuthLogger.config-bestand.
  • Log.CS: Het bestand waarin een stringbuilder schrijft de waarden in een logboekbestand.
  • FormsAuthLogger.config: Het XML-bestand dat wordt gelezen door het bestand Log.cs. Dit bestand is in de map/bin met dll-bestand gemaakt. U kunt het bestand het volgende configureren:
    • Filteren op IP: U kunt het vastleggen van gegevens door filteren client-IP. Op deze manier kunt u alleen verzoeken registreren vanaf een client waarvan bekend is het probleem te reproduceren. Dit vermindert de grootte van het logboek.
    • Type opname: Hiermee geeft u op waar u het bestand wilt opslaan. De standaardwaarde is de map met tijdelijke ASP.NET-bestanden, maar kunt u dit opslaan overal zolang de werkprocesaccount de mogelijkheid om te schrijven heeft naar de map.
Opmerking Leg ik een downloadkoppeling voor de code die is opgegeven de FormsAuthLogger.zip-bestand.

Ik moet hier de belangrijkste gebieden aanwijzen:
  1. Maak een klasse die de interface IHttpModule implementeert.
    public class FormsAuthEvents : IHttpModule 
    {
    		…code…
    }
  2. Wire-up van de gebeurtenis die u wilt bekijken. In dit voorbeeld We maken gebruik van de gebeurtenis Application_BeginRequest . Op deze manier kunnen we elk verzoek onderzoeken en vaststellen of heeft de verificatiecookie formulieren en de FormsAuthenticationTicket als de cookie aanwezig is.
    public void Init(HttpApplication application) 
    {
    	//Wire up the BeginRequest event
    	application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
    }
  3. De gebeurtenis Application_BeginRequest implementeren.
    private void Application_BeginRequest(Object source, EventArgs e)
    {	
       …code to log the ticket…
    }
    
  4. De verificatiecookie formulieren ophalen en vervolgens decoderen het is.
  5. Meld de waarden. Ik kan aanbevelen de volgende aanmelden aanvulling op de gegevens van formulieren. Hierdoor kunt u uw formulieren zijn uitgelijnd verificatie-informatie in de logboeken van IIS, indien nodig:
    • Datum: Hiermee kunt u bekijken wanneer de aanvraag in.
    • RequestType: Geeft aan of de aanvraag Get is of een Boek.
    • URL: Is het patroon van aanvragen voor het probleem geleid.
    • Verwijzende site
    • Client-IP: Ties in de aanvragen aan een specifieke client.

Zoals altijd gerust ideeën over onderwerpen die u wilt verzenden opgenomen in toekomstige kolommen of in de Knowledge Base met de Vragen om (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) met dit formulier.

De informatie in dit artikel is van toepassing op:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 2.0
Trefwoorden: 
kbtshoot kbiis kbcode kbasp kbmt KB910439 KbMtnl
Machine-translated ArticleMachine-translated Article
BELANGRIJK: Dit artikel is vertaald door middel van automatische vertalingssoftware van Microsoft en is mogelijk nabewerkt door de Microsoft Community via CTF-technologie (Community Translation Framework) of door een menselijke vertaler. Microsoft biedt zowel automatisch vertaalde, door mensen vertaalde en door de community nabewerkte artikelen aan, zodat er in meerdere talen toegang is tot alle artikelen in onze Knowledge Base. Een vertaald of bewerkt artikel kan fouten bevatten in vocabulaire, syntaxis of grammatica.. Microsoft is niet verantwoordelijk voor eventuele onjuistheden, fouten of schade ten gevolge van een foute vertaling van de inhoud van een bericht of het gebruik van deze vertaalde berichten door onze klanten.
De Engelstalige versie van dit artikel is de volgende: 910439  (http://support.microsoft.com/kb/910439/en-us/ )
Delen
Extra ondersteuningsopties
Microsoft Community Support-forums
Neem rechtstreeks contact met ons op
Een door Microsoft gecertificeerde partner zoeken
Microsoft Store