用于分析Http连接的C#程序

时间:2011-06-23 11:40:51

标签: c# .net asp.net windows sockets

我有asp.net网站。当我在页面加载之前创建一个带有Thread.Sleep的测试页面时。有用于登录的表单身份验证。等待一小时后,页面会自动注销。所以我想看看这次注销的原因是什么。我打算使用C#代码捕获所有HttpConnection通信。我只想看到沟通的原因。我使用Visual Studio 2005在本地计算机上运行该网站。

请您分享代码以实现此功能吗?

注意:我知道这可以使用像tcpDump这样的工具来实现。但目前我正在尝试单独为此功能开发代码 - 以查看连接关闭/注销的原因。

更新

我有以下代码。但是我如何实现我的任务 - 如何找到所有连接关闭/注销的原因。请帮助我,因为我对套接字编程完全不熟悉。

 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);
}

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找错误的地方......使用表单身份验证时,由于身份验证Cookie过期而发生注销。如果您使用.Net Reflector查看System.Web.Security.FormsAuthentication.SignOut()方法,您可以看到它通过向您提供过去过期的新Cookie来签署您。