我有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);
}
答案 0 :(得分:1)
我认为您正在寻找错误的地方......使用表单身份验证时,由于身份验证Cookie过期而发生注销。如果您使用.Net Reflector查看System.Web.Security.FormsAuthentication.SignOut()
方法,您可以看到它通过向您提供过去过期的新Cookie来签署您。