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>