23. oktober 2002 - 13:07Der er
15 kommentarer og 1 løsning
.DAT fil istedet for cookie!?
Hej
Når jeg vil placere en cookie på min maskine, bliver det lavet til en .DAT fil i stedet for!? Den kode jeg bruger er fra "Beginning ASP.net" bogen fra WROX og kører fint hos et par af mine bekendte.
Har jeg overset noget i opsætningen af frameworkes el. lign.?
Øhm... Cookies bliver sat på klienten, og har intet med .NET frameworket at gøre (eftersom klienten ikke engang har .NET installeret). Der ligger en dat filer og styrer "overblikket" over cookies. Er du sikker på at du kigger det rigtige sted?
IE6 har iøvrigt også nogle options med Cookies. Måske er det disse du har pillet ved?
Jo, jeg ved godt at frameworket ligger på serveren - men jeg er temmelig ny i det her. Jeg har Win2000 og kigger efter min cookie i C:\dokuments and settings\administrator\cookies (jeg er logget på som admin). Men i denne mappe dukker .DAT filen så op istedet for en cookie.....
...og jeg har ikke pillet ved tilladelserne i Explorer - jeg har testet i Netscape og får det samme problem der. Helt nøjagtigt: "Server Error in '/' Application......Object reference not set to an instance of an object" og så en forklaring om debug mm.
Her er lidt kode - første del er en selvstændig fil der sætter en cookie - anden del er også en selvstændig fil der bare læser i den satte cookie og bruger værdien til en baggrundsfarve:
<%@ Page Language="VB" %> <script language="vb" runat="server"> Sub Page_Load(Source As Object, E as EventArgs) If Not IsPostBack Then MyButton.Text = "Save Cookie" MyDropDownList.Items.Add("Blue") MyDropDownList.Items.Add("Red") MyDropDownList.Items.Add("Gray") End If End Sub Public Sub Click(ByVal sender As Object, ByVal e As System.EventArgs) Dim MyCookie As New HttpCookie("Background") MyCookie.Value = MyDropDownList.SelectedItem.Text Response.Cookies.Add(MyCookie) End Sub </script> <html> <body> <form id="CookieForm" method="post" runat="server"> <asp:DropDownList id=MyDropDownList runat="server"/> <asp:button id=MyButton runat="server" OnClick="Click"/> </form> </body> </html>
<%@ Page Language="VB" %> <script language="vb" runat="server"> Sub Page_Load(Source As Object, E as EventArgs) Response.Cache.SetExpires(DateTime.Now) End Sub </script> <html> <body bgcolor="<%=Request.Cookies("Background").Value%>"> </body> </html> **************************************************************
Og nej, jeg har ikke forsøgt at debugge - jeg kender ikke noget til det, men det kan jeg da komme til. Og vedr. vejledning om web.config, så er det åbenbart også noget jeg skal lure på....
Det er sikkert den her den fejler på: <%=Request.Cookies("Background").Value%> Hvis den cookie ikke findes får du en "Object reference not set to an instance of an object"
Public Sub Click(ByVal sender As Object, ByVal e As System.EventArgs) Dim MyCookie As New HttpCookie("Background") MyCookie.Value = MyDropDownList.SelectedItem.Text MyCookie.Expires = Now.AddMinutes(10) <---- Tilføj den linie og prøv igen Response.Cookies.Add(MyCookie) End Sub
If Request.Cookies("WP") Is Nothing Dim Cookie As HttpCookie Cookie = New HttpCookie("WP") Cookie.Values.Add("UserInit","Noget") Cookie.Expires = DateTime.MaxValue Response.AppendCookie(Cookie) End If
Hent Cookie:
DIM Cookie As HttpCookie = Request.Cookies("WP") ViewState("Referer") = Request.Headers("Referer") IF Not Cookie Is Nothing strUInit = (cookie.Values("UserInit")) ...validering... Response.Redirect("side.aspx") END IF
Denne gemmer en cookie som administrator@station[1].txt på min maskine
>>>psycho: Mange tak for hjælpen. Det er mig lidt træls at jeg sidder og er ved at kløjs i en bog, der åbenbart ikke indeholder brugbare eksempler:-)
Kan det passe for mig, at hvis expires ikke angives, så forsvinder cookien når browseren lukkes ned?
Lars
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.