Hi,
 
Ron is right for sure. Session_End is fired asynchronously on a separate thread 
in case of a session-timeout. In this case a special HttpApplication instance 
is constructed to process the Session_End event.
 
In short: Instead of accessing HttpContext.Current.Session in your 
Session_End() eventhandler, you should write
 
        protected void Session_End(Object sender, EventArgs e) 

          {

            XXXXXX.CommonUtil.Log("Session_End:"+ this.Session.SessionID); // 
note "this.Session" instead of "HttpContext.Current.Session" !

          } 
 
and everything should work as you expect.
 
hope this helps,
Erich


________________________________

        From: 刘志军 [mailto:[EMAIL PROTECTED] 
        Sent: Tuesday, May 29, 2007 7:05 AM
        To: Log4NET User
        Subject: Re: Log4Net Can Not Log Message When AppDomain Unload , Why?
        
        
        Perhaps you are right.
        But I know the httpcontent was build every time whena request is 
comming.
        when the Session_End fired , why the log component can not work 
propertyly ?
        
        
        
        
        On 5/29/07, Ron Grabowski <[EMAIL PROTECTED]> wrote: 

                I bet HttpContext.Current is null. If a user closes their 
browser their session is still active on the server (usually for 20 minutes). 
When the Session_End event fires there is no HttpContext.Current (i.e. there 
isn't a Request or a Response). 
                
                
                
                ----- Original Message ----
                
                From: 刘志军 <[EMAIL PROTECTED]>
                
                To: [email protected] 
                
                Sent: Monday, May 28, 2007 10:19:21 PM
                
                Subject: Log4Net Can Not Log Message When AppDomain Unload , 
Why?
                
                
                
                Hi everyone,
                
                
                
                Details:
                
                
                
                I used Log4Net for Asp.Net Application under version 1.1.4322.
                
                
                
                  I want to log the Session_End event in the Global Class by 
the command line "iisreset".
                
                
                
                but the infomation can not be loged.
                
                
                
                In the another , the Session_Start event information can be 
loged correctly. 
                
                
                
                below is the code:
                
                
                
                using System;
                
                using System.Collections;
                
                  using System.ComponentModel;
                
                using System.Web;
                
                using  System.Web.SessionState;
                
                
                
                namespace XXXX.XXXX.Web
                
                  {
                
                    /// <summary>
                
                    /// Summary description for Global.
                
                    /// </summary>
                
                    public class Global :  System.Web.HttpApplication
                
                    {
                
                        /// <summary> 
                
                          /// Required designer variable.
                
                        /// </summary>
                
                          private System.ComponentModel.IContainer components = 
null;
                
                
                
                          public Global()
                
                        {
                
                            InitializeComponent();
                
                        }
                
                
                
                          protected void Application_Start(Object sender, 
EventArgs e)
                
                        {
                
                
                
                        }
                
                
                
                          protected void Session_Start(Object sender, EventArgs 
e) 
                
                        {
                
                              
XXXXXX.CommonUtil.Log("Session_Start:"+HttpContext.Current.Session.SessionID);
                
                        }
                
                
                
                        protected void Application_BeginRequest(Object sender, 
EventArgs e) 
                
                          {
                
                        }
                
                
                
                          protected void Application_EndRequest(Object sender, 
EventArgs e)
                
                        {
                
                          }
                
                
                
                        protected void Application_AuthenticateRequest(Object 
sender, EventArgs e) 
                
                        {
                
                
                
                        }
                
                
                
                        protected void Application_Error(Object sender, 
EventArgs e)
                
                          {
                
                
                
                        }
                
                
                
                        protected void Session_End(Object sender, EventArgs e) 
                
                          {
                
                            
XXXXXX.CommonUtil.Log("Session_End:"+HttpContext.Current.Session.SessionID);
                
                          }
                
                
                
                        protected void Application_End(Object sender, EventArgs 
e) 
                
                        {
                
                
                
                        }
                
                
                
                        #region Web Form Designer generated code
                
                        /// <summary>
                
                        /// Required method for Designer support - do not modify
                
                        /// the contents of this method with the code editor.
                
                          /// </summary>
                
                        private void InitializeComponent()
                
                          {
                
                            this.components = new 
System.ComponentModel.Container ();
                
                          }
                
                        #endregion
                
                    }
                
                  }
                
                
                
                
                
                
                
                Can some one give me some help ?
                
                
                
                
                
                
                
                
                
                


Reply via email to