web.config 要注意:

<system.web>

<sessionState mode="InProc" timeout="time (mins)"/>
  ....... <略>

</system.web>

 

首先建立一個"Globol.asax"

一開始 .net 就已經很聰明的幫你把很多東西建好了,如下:

<%@ Application Language="C#" %>

<%@ Import Namespace="System.Threading" %>
<%@ Import Namespace="System.Globalization" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="MMS.DBUtility" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Data" %>

<script runat="server">

    void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {
       // 可以針對多國語言進行設定

        string lang = string.Empty;
        lang = Profile.UserCulture;
        if (string.IsNullOrEmpty(lang))
        {
            lang = string.Empty;
        }
        if (Request.QueryString["lang"] != null)
        {
            lang = Request.QueryString["lang"];
        }
        Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang);
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang);
    }

    void Application_Start(object sender, EventArgs e)
    {
        // 應用程式啟動時執行的程式碼

    }
   
    void Application_End(object sender, EventArgs e)
    {
        //  應用程式關閉時執行的程式碼

    }
       
    void Application_Error(object sender, EventArgs e)
    {
        // 發生未處理錯誤時執行的程式碼

    }

    void Session_Start(object sender, EventArgs e)
    {
        // 啟動新工作階段時執行的程式碼

    }

    void Session_End(object sender, EventArgs e)
    {
        // 工作階段結束時執行的程式碼。
        // 注意: 只有在 Web.config 檔將 sessionstate 模式設定為 InProc 時,
        // 才會引發 Session_End 事件。如果將工作階段模式設定為 StateServer
        // 或 SQLServer,就不會引發這個事件。

        // 下列這個StreamWriter只是把執行事件的時間記錄下來,當然也可以多把一些資訊也順便寫在裡面
        System.IO.StreamWriter sw = new System.IO.StreamWriter("c:\\123.txt",true);
        sw.WriteLine(DateTime.Now);
        sw.Close();

        SqlConnection con = new SqlConnection("Server=IP_Addr;database=DB_Name;uid=sa;pwd=YourPassword");
        con.Open();
        SqlCommand cmd = new SqlCommand("DELETE FROM ADM_LOGON WHERE USERID = '" + Session["UserID"]+ "'", con);
        cmd.ExecuteNonQuery();
        con.Close();
        Session["UserID"] = "";
        //Response.Redirect("Logon.aspx");  ← 這個好像不會執行

        // 還有一個很奇怪的問題,在IE8.0使用分頁開啟,也不會執行到這個Session_End, 目前還不知道該怎麼解決

    }
      
</script>

arrow
arrow
    全站熱搜

    ⒶⓂⓎ 發表在 痞客邦 留言(0) 人氣()