我想将它保存在 cookie 中而不是 session

I want to keep it in cookie instead of session

如何将值保存在 cookie 或 header 而不是 session 中; 我不知道如何将套接字数据保存在 session 中。我试过了 Application["socket"]="127.0.0.1:3306"; 没用

Session.Add("socket", sender);

Socket s = (Socket)Session["socket"];

 try
    {
        if (Request.HttpMethod == "POST")
        {
            String status = Request.QueryString.Get("status").ToUpper();
            if (status == "welcome")
            {
                try
                {
                    String ipnum = "127.0.0.1".ToUpper();
                    int port = int.Parse("3306");
                    IPAddress ip = IPAddress.Parse(ipnum);
                    System.Net.IPEndPoint remoteEP = new IPEndPoint(ip, port);
                    Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    sender.Connect(remoteEP);
                    sender.Blocking = false;
                    Session.Add("socket", sender);
                    Response.AddHeader("stat", "hello");
                }
                catch (Exception err)
                {
                    Response.AddHeader("warn", err.Message);
                    Response.AddHeader("stat", "FAIL");
                }
            }
            else if (status == "goodbye")
            {
                try {
                    Socket s = (Socket)Session["socket"];
                    s.Close();
                } catch (Exception err){

                }
                Session.Abandon();
                Response.AddHeader("stat", "hello");
            }

取决于它是什么、您想访问它的位置以及原因。如果只是将它放在后端的问题,请坚持使用 session.

重要:

您不能将 Socket object 添加为 cookie 或 header。 Cookies 和 headers 是字符串。套接字 object 远不止于此,即使您可以对其进行序列化和反序列化,它也不会引用相同的资源 and/or 连接。

如果您想与客户端共享一个值(有意义的),您可以像这样将它添加到 cookie 中:

HttpContext.Response.Cookies.Append("first_request", DateTime.Now.ToString());

我看你已经知道怎么加了header,我就不进去了