2010-05-25 3 views
0

Dans mon fichier Global.asax j'ai les suivantes:Cookie ajouter l'avertissement Global.asax dans l'application log

void Session_End(object sender, EventArgs e) 
{ 
    System.Web.HttpCookie isAccess = new System.Web.HttpCookie("IsAccess"); 
    isAccess.Expires = DateTime.Now.AddDays(-1); 
    isAccess.Value = ""; 
    System.Web.HttpContext.Current.Response.Cookies.Add(isAccess); 
} 

Donc, chaque fois que cette méthode on l'appelle dans l'application, l'événement suivant est enregistré dans le journal de l'application comme avertissement:

Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 5/25/2010 12:23:20 PM 
Event time (UTC): 5/25/2010 4:23:20 PM 
Event ID: c515e27a28474eab8d99720c3f5a8e90 
Event sequence: 4148 
Event occurrence: 332 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/2100509645/Root-1-129192259222289896 
    Trust level: Full 
    Application Virtual Path:/
    Application Path: <PathRemoved>\www\ 
    Machine name: TIPPER 

Process information: 
    Process ID: 6936 
    Process name: w3wp.exe 
    Account name: NT AUTHORITY\NETWORK SERVICE 

Exception information: 
    Exception type: NullReferenceException 
    Exception message: Object reference not set to an instance of an object. 

Request information: 
    Request URL: 
    Request path: 
    User host address: 
    User: 
    Is authenticated: False 
    Authentication Type: 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 

Thread information: 
    Thread ID: 7 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 
    Is impersonating: False 
    Stack trace: at ASP.global_asax.Session_End(Object sender, EventArgs e) in <PathRemoved>\Global.asax:line 113 

Une idée de pourquoi ce code causerait cette erreur?

+0

Dans quelle méthode faites-vous l'appel? –

+0

Désolé tout j'ai oublié d'ajouter ceci, c'était dans le Session_End. –

+0

Donc, pour simplifier, le site A contient un autre petit site B. B est un ancien code qui sera éventuellement incorporé dans le site A. Jusqu'à ce que nous le fassions, nous voulons que le site A contrôle l'entrée dans le site B. architectures nous utilisons un cookie mais à la fin nous voulons terminer le cookie. alors comment appelez-vous la destruction de ceci avant la fin de la session? –

Répondre

2

Il semble que vous essayez de modifier les cookies pendant l'événement Session_End. Cela ne fonctionnera pas car la fin d'une session (Session_End) ne correspond pas à une requête HTTP d'un utilisateur. Au lieu de cela, il est initié par ASP.NET 20 minutes (ou quel que soit le délai d'expiration de la session) après la dernière requête HTTP reçue d'un utilisateur particulier.

0

Une idée pourquoi ce code causerait cette erreur?

Mon conjecture est que vous accédez à la réponse dans une méthode dans laquelle aucune réponse existe.

Dans quelle méthode de Global.asax appelez-vous ce code?

0

Il ressemble à la Session_End ... il n'y a probablement pas de HttpContext, sans parler d'une réponse.

Si vous tentez simplement d'effacer un cookie à la fin d'une session, ne pouvez-vous pas simplement définir une date d'expiration et la laisser effacer lorsque l'utilisateur ferme son navigateur?