All browser limit in one way or another the amount of cookies a certain website can store. If for example your browser accepts n cookies, the when you send the n+1 the browser will delete your oldest one. It seems to me that this is what is going on.
A possible solution is to use one cookie with various subvalues instead of a single one. That way you can have in one cookie as many values as you want (subjected always to the cookie maximum size limit which is 4086 bytes).
The code to do that would be something like:
//This code creates the cookie, ads some subvalues to it and then adds it to the request so its sent to the browser
HttpCookie cookie = new HttpCookie();
cookie.Name = "MyKeys";
cookie.Values.Add("Key1", "ValueKey1");
cookie.Values.Add("Key2", "ValueKey2");
cookie.Values.Add("Key3", "ValueKey3");
//etc...
Request.Cookies.Add(cookie);
//This code reads the data from the cookie.
HttpCookie rcookie = Response.Cookies.Get("MyKeys");
string value1, value2, value3;
//We verify it the variable is null because the cookie might not exist in the users browser. If so, this variable would be null
if (rcookie != null)
{
value1 = rcookie.Values.Get("Key1");
value2 = rcookie.Values.Get("Key2");
value3 = rcookie.Values.Get("Key3");
}