Cookie erstellen in VB.NET 2008 Express

DSimon

Grünschnabel
Hallo,

möchte mit einem kleinen VB.NET Programm einen Cookie erstellen. Es soll wirklich nur ein reines VB.NET-Programm sein ohne eine Seite mit ASP.NET. Ich scheitere aber schon daran, mir die Variable myCookie zu erstellen, weil es den Typ HttpCookie wie in dem Beispiel unten verwendet nicht gibt.

Imports System.Net
Imports System.Web

Module Module1

Sub Main()

Dim aCookie As New HttpCookie("UserName")

aCookie.Value = "MyUsername"

aCookie.Expires = DateTime.Now.AddDays(30)

Response.Cookies.Add(aCookie)


End Sub

End Module

Es gibt unter System.Net zwar Cookies, aber damit komme ich auch nicht weiter. Hat da mal jemand einen Tipp?
 

ksk

Erfahrenes Mitglied
Es soll wirklich nur ein reines VB.NET-Programm sein ohne eine Seite mit ASP.NET.

Hier mal ein Sample in C#, kann man sicherlich leicht in VB.NET umschreiben.
Fallst damit schwierigkeiten haben solltest dann gib einfach bescheid.
Code:
  HttpCookie myCookie = new HttpCookie(Assembly.GetCallingAssembly().FullName);
  myCookie.Values.Add("user", cok.pUser);
  myCookie.Values.Add("pass", cok.pPass);
  myCookie.Values.Add("create", cok.pCreate);
  myCookie.Values.Add("lastVisit", cok.pLastVisit);
  myCookie.Values.Add("expired", cok.pExpired);
  if (Request.Cookies[Assembly.GetCallingAssembly().FullName] == null) { myCookie.Expires = Convert.ToDateTime(cok.pExpired); }
  // Optional: Den Cookie an eine Sessionvariable übergeben
  Session["Cookie"] = myCookie;
  // Zum Schluss den Cookie erstellen
  Response.Cookies.Add(myCookie);
Zu beachten: Wenn ein Cookie gelöscht werden dann ExpiredDate in der Vergangenheit angeben.

Lg
ksk
 

DSimon

Grünschnabel
Das mit dem Deklarieren mit dem Typ HttpCookie habe ich jetzt hinbekommen. Ich musste unter Projekt -> Verweis hinzufügen noch System.Web hinzufügen. Ich dachte immer das reicht, wenn man ganz open Imports System.Web angibt.
Was jetzt noch nicht funktioniert, ist die Zeile "Response.Cookies.Add(myCookie)". Habe es auch schon probiert eine Variable vom Typ HttpResponse zu deklarieren. Dazu wird dann aber auch wieder IO.TextWriter benötigt, was ich gerade nicht wirklich verstehe.

Code:
  Dim myCookie = New HttpCookie("TestCookie")

        myCookie.Values.Add("user", "TestUser")
        myCookie.Values.Add("pass", "TestPass")
        myCookie.Values.Add("expired", "01.01.2015")

        'if (Request.Cookies[Assembly.GetCallingAssembly().FullName] == null) { myCookie.Expires = Convert.ToDateTime(cok.pExpired); }
        ' Optional: Den Cookie an eine Sessionvariable übergeben
        'Session["Cookie"] = myCookie;
        'Zum Schluss den Cookie erstellen
        'IO.TextWriter()

        'Dim myResponse = New HttpResponse()
        'myResponse.Cookies.Add(myCookie)

        Response.Cookies.Add(myCookie)
 

DSimon

Grünschnabel
Nicht wirklich. Auf den Seiten bin ich schon über Google gelandet. In all den Code-Beispielen steht unten immer der Befehl "Response.Cookies.Add(myCookie)". Ich vermute mal das dieser "Response"-Befehl aber nur zur Verfügung steht, wenn das in einer Web-Site ausgeführt wird?!?

Ich möchte aber einfach nur einen Cookie bei der Windows-Anmeldung schreiben, um sicherzustellen, dass der User hinterher in seiner Web-Anwendung (auf die ich keinen Einfluss habe) eine bestimmte Einstellung gesetzt hat.
 

ksk

Erfahrenes Mitglied
Windows Anmeldung?
Meinst du damit die Anmeldung auf einem OS oder doch auf einer Page mit "Windows-Authentication"?
 

Spyke

Premium-User
Cookies sind ja nur Textdateien, könntest du theoretisch mit den normalen IO Bordmitteln des .Net Frameworks realisieren.
Deine Anwendung läuft ja schon lokal auf dem Rechner.

Nur dein ganzes vorhaben kommt mir irgendwie komisch rüber.
 

DSimon

Grünschnabel
Ja, den Inhalt der eigentlichen Cookie-Datei könnte ich problemlos im Ordner Temporary Internetfiles ablegen. Das Problem ist aber, dass der Dateiname (8-stellige Zahlen-Buchstabenkombination) bei jeder Einstellungsänderung wechselt. Und dieser Dateiname wird dann in der Index.dat verwaltet. Ich hatte gehofft, dass das Schreiben der Cookies über das Framework, genau diese Funktionalität bieten würde.
 

ksk

Erfahrenes Mitglied
Also ganz verstehen tu ichs nicht, vielleicht auch weil ich grad aufgestanden bin.
Du willst nach der Windows-Anmeldung Cookies erstellen.

Das mit dem Deklarieren mit dem Typ HttpCookie habe ich jetzt hinbekommen. Ich musste unter Projekt -> Verweis hinzufügen noch System.Web hinzufügen
Bla Bla
Ich vermute mal das dieser "Response"-Befehl aber nur zur Verfügung steht, wenn das in einer Web-Site ausgeführt wird?!?
Dann klingt es so als würde es sich um eine WinForm handeln (... Verweis hinzufügen etc. usw....).

Ja, den Inhalt der eigentlichen Cookie-Datei könnte ich problemlos im Ordner Temporary Internetfiles ablegen. Das Problem ist aber, dass der Dateiname (8-stellige Zahlen-Buchstabenkombination) bei jeder Einstellungsänderung wechselt. Und dieser Dateiname wird dann in der Index.dat verwaltet
Und zur letzt scheint es so das ein automatismus vorhanden ist der irgendwas verarbeitet und Dateien (8-stellige Zahlen-Buchstabenkombination) erstellt.
Könntest du dein vorhaben genauer erklären. Was möchtest du erreichen?

Lg
ksk