2011-06-23 69 views
0

我有asp.net網站。當我在加載頁面之前使用Thread.Sleep創建測試頁面時。有用於登錄的表單身份驗證。等待一小時後,頁面自動退出。所以我想看看這個註銷的原因是什麼。我打算使用C#代碼捕獲所有的HttpConnection通信。我只想看到通信關閉的原因。我使用Visual Studio 2005在本地機器上運行網站。C#程序分析Http連接

您可以共享代碼以實現此功能嗎?

注:我明白這可以使用像tcpDump這樣的工具來實現。但是目前我正在嘗試單獨爲此功能開發一個代碼 - 查看連接關閉/註銷的原因。

UPDATE:

我有下面的代碼。但我該如何實現我的任務 - 如何找到所有連接關閉/註銷的原因。請幫助我,因爲我對套接字編程完全陌生。

protected void Page_Load(object sender, EventArgs e) 
{ 

    IPHostEntry host; 
    string localIPAddress = "?"; 
    host = Dns.GetHostEntry(Dns.GetHostName()); 
    foreach (IPAddress ip in host.AddressList) 
    { 
     if (ip.AddressFamily == AddressFamily.InterNetwork) 
     { 
      localIPAddress = ip.ToString(); 
     } 
    } 

    System.Net.Sockets.Socket mySocket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Raw, System.Net.Sockets.ProtocolType.IP); 
    mySocket.Bind(new System.Net.IPEndPoint(System.Net.IPAddress.Parse(localIPAddress), 0)); 
    mySocket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.IP, System.Net.Sockets.SocketOptionName.HeaderIncluded, 1); 

    byte[] inBytes = new byte[] { 1, 0, 0, 0 }; 
    byte[] outBytes = new byte[] { 0, 0, 0, 0 }; 
    mySocket.IOControl(System.Net.Sockets.IOControlCode.ReceiveAll, inBytes, outBytes); 
} 
+0

爲什麼這個問號'string localIPAddress =「?」;'? –

+0

用'try {} catch {}'嘗試圍繞你的代碼。看看是否有任何異常被拋出。 –

+0

沒有例外。我正在尋找代碼,將告訴如何找到所有連接的開始和結束時間,連接註銷時間,連接註銷/關閉/到期原因等..請幫助 – Lijo

回答

1

我認爲你正在尋找錯誤的地方...使用表單身份驗證,註銷發生是因爲身份驗證cookie過期。如果您使用.Net Reflector查看System.Web.Security.FormsAuthentication.SignOut()方法,您可以看到它通過爲您提供一個過去過期的新Cookie來爲您簽名。

+0

有沒有辦法延長這個默認SignOut時間,並使cookie不過期? – Lijo

+0

是的,你在登錄代碼中使用FormsAuthenticaton.RedirectFromLogon方法嗎?如果是這樣,第二個參數可以讓你的cookie永不過期。如果您手動設置Cookie,則可以自行處理到期日。 – David

+0

我們不使用RedirectFromLoginPage。我們使用FormsAuthentication.SetAuthCookie(SessionManager.UserID.Value.ToString(),false); Response.Redirect(appUrl [1] +「&BackUrl = BackCall」);我應該對上面的代碼做出什麼樣的改變才能達到相同的效果(只是區別在於cookie的過期時間)? – Lijo