Sinceramente non capisco tutti questi problemi . In fondo leggere-scrivere un cookie è banale. Comunque, vedi se ti può servere.
codice:
    '---------------------------------------------------------------------------------
    'Restituisce il valore di una chiave di un cookie o "" se non esiste
    'parametri passati: NomeCookie$, NomeChiave$
    '---------------------------------------------------------------------------------
    Public Function getCookie(ByVal NomeCookie As String, ByVal NomeChiave As String) As String
        If (Not (System.Web.HttpContext.Current.Request.Cookies(NomeCookie) Is Nothing)) AndAlso (Not (System.Web.HttpContext.Current.Request.Cookies(NomeCookie)(NomeChiave) Is Nothing)) Then
            Return System.Web.HttpContext.Current.Request.Cookies(NomeCookie)(NomeChiave)
        Else
            Return ""
        End If
    End Function

    Public Function getCookie(ByVal NomeCookie As String) As String
        If (Not (System.Web.HttpContext.Current.Request.Cookies(NomeCookie) Is Nothing)) Then
            Return System.Web.HttpContext.Current.Request.Cookies(NomeCookie).Value
        Else
            Return ""
        End If

    End Function

'-----------------------------------------------------------------------------------------------------
'creo un cookie semplice
'-----------------------------------------------------------------------------------------------------
Public Sub setCookie(ByVal NomeCookie As String, ByVal value As String, ByVal minutiDurata As Integer)
	System.Web.HttpContext.Current.Response.Cookies(NomeCookie).Value = value
	System.Web.HttpContext.Current.Response.Cookies(NomeCookie).Expires = DateTime.Now().AddMinutes(minutiDurata)
End Sub

'-----------------------------------------------------------------------------------------------------
'creo un cookie composto
'-----------------------------------------------------------------------------------------------------
Public Sub setCookie(ByVal NomeCookie As String, ByVal chiave As String, ByVal value As String, ByVal minutiDurata As Integer)
	System.Web.HttpContext.Current.Response.Cookies(NomeCookie)(chiave) = value
	System.Web.HttpContext.Current.Response.Cookies(NomeCookie).Expires = DateTime.Now().AddMinutes(minutiDurata)
End Sub

    '-------------------------------------
    'cancello cookie
    '-------------------------------------
    Public Sub delCookie(ByVal NomeCookie As String)
        System.Web.HttpContext.Current.Response.Cookies(NomeCookie).Expires = New DateTime(1980, 1, 1)
    End Sub

    '-------------------------------------------------------------------------
    'fa scadere tutti i cookies 
    '-------------------------------------------------------------------------
    Public Sub delAllCookies()
        For Each cookieName As String In System.Web.HttpContext.Current.Request.Cookies.AllKeys
            System.Web.HttpContext.Current.Response.Cookies(cookieName).Expires = New DateTime(1980, 1, 1)
        Next
    End Sub