1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Cookie erstellen in VB.NET 2008 Express

Dieses Thema im Forum ".NET Web und Kommunikation" wurde erstellt von DSimon, 14. August 2014.

  1. DSimon

    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?
     
  2. ksk

    ksk Erfahrenes Mitglied

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

    Lg
    ksk
     
  3. DSimon

    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 (Text):
    1.   Dim myCookie = New HttpCookie("TestCookie")
    2.  
    3.         myCookie.Values.Add("user", "TestUser")
    4.         myCookie.Values.Add("pass", "TestPass")
    5.         myCookie.Values.Add("expired", "01.01.2015")
    6.  
    7.         'if (Request.Cookies[Assembly.GetCallingAssembly().FullName] == null) { myCookie.Expires = Convert.ToDateTime(cok.pExpired); }
    8.         ' Optional: Den Cookie an eine Sessionvariable übergeben
    9.         'Session["Cookie"] = myCookie;
    10.         'Zum Schluss den Cookie erstellen
    11.         'IO.TextWriter()
    12.  
    13.         'Dim myResponse = New HttpResponse()
    14.         'myResponse.Cookies.Add(myCookie)
    15.  
    16.         Response.Cookies.Add(myCookie)
     
  4. ksk

    ksk Erfahrenes Mitglied

  5. DSimon

    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.
     
  6. ksk

    ksk Erfahrenes Mitglied

    Windows Anmeldung?
    Meinst du damit die Anmeldung auf einem OS oder doch auf einer Page mit "Windows-Authentication"?
     
  7. DSimon

    DSimon Grünschnabel

    Ich meine die Anmeldung an einem OS.
     
  8. Spyke

    Spyke Capoeirista 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.
     
  9. DSimon

    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.
     
  10. ksk

    ksk Erfahrenes Mitglied

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

    Dann klingt es so als würde es sich um eine WinForm handeln (... Verweis hinzufügen etc. usw....).

    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
     
  11. DSimon

    DSimon Grünschnabel

    Ja, ich will nach der Windows-Anmeldung ein Cookie erstellen.
    Ja, es handelt sich um eine Winform.

    Ich versuche es noch mal zu beschreiben:
    In der Web-Anwendung gibt es eine Einstellung zum Autoausfüllen, welche in einem Cookie gespeichert wird. Nur leider ist die gewünschte Einstellung nach einer Neuanmeldung immer weg, und das Häkchen in der Web-Anwendung für normale User recht schwer zu finden. Daher hatte ich die Idee, die gewünschte Einstellung nach der Windows-Anmeldung durch Erstellen des Cookies mit der gewünschten Einstellung zu setzen.

    Einfach eine entsprechende Textdatei anzulegen, wäre jetzt nicht das Problem. Das Problem welches ich sehe, ist aber dass der Dateiname des Cookies eine 8-stellige Zahlen-Buchstaben-Kombination ist, welche auch bei jedem Einstellungswechsel in der Web-Anwendung wechselt. Dieser Dateiname steht dann in der Index.dat, welche sich nicht einfach als Textdatei bearbeiten lässt. Ich hatte gedacht, dass die Funktionalität im Framework zur Bearbeitung von Cookies genau dies macht.

    Standardmässig ist der Cookie auch nicht vorhanden, so dass ich eigentlich auch gar nicht nach einem bereits vorhandenen Cookie suchen müsste. Ich müsste einfach nur den Cookie als Textdatei anlegen, und den Dateinamen dann in der Index.dat eintragen.
     
  12. ComFreek

    ComFreek Mod | @comfreek Moderator

Die Seite wird geladen...