Avatar billede mema Nybegynder
21. maj 2006 - 15:46 Der er 10 kommentarer og
1 løsning

Cookies og IFrame

Hej,
Jeg har en formular som sender data til en Access database. I denne formular har jeg også skrevet en @@IDENTITY, som husker den igangværende ID-nummer:
OleDbCommand GetLastID = new OleDbCommand("SELECT @@IDENTITY", conn);
double LastID = Math.Round(double.Parse(GetLastID.ExecuteScalar().ToString()),0);

Her har jeg også indsat en Cookie som skulle huske denne session:
HttpCookie objCookie = new HttpCookie("myCookie", LastID.ToString());
Response.Cookies.Add( objCookie );

Så har jeg rededigeret formularen til en side som skal vise ID af denne ny afsendte formualar til den person som har sendt den i fx denne form: Hej, Du er tildelt ID-nummer... Husk det..:
Response.Redirect("http://xxxx/xxxx/RefNummer.aspx");

På denne side (RefNummer.aspx) har jeg følgende kode i Page_Load:
if (!IsPostBack)
{
lblID.Text = "Du er tildelt Ref.nr.: " + "<b>" + (Request.Cookies["myCookie".ToString()].Value ) +"</b>";
}

Alt kører fint localt. Men jeg er nødt til at sætte formularen gennem en IFRAME i en anden side, Så går det galt. Jeg har også prøvet at sætte absolute URL i Redirect koden i formularen, men der kommer følgende fejlmeddellese i browseren, når jeg har afsendt formularen:
System.NullReferenceException: Object reference not set to an instance of an object.
......
......
Stack Trace:
[NullReferenceException: Object reference not set to an instance of an object.]
  xxxx.RefNummer.Page_Load(Object sender, EventArgs e) in C:\AspDotNet\webapps\xxxx\RefNummer.aspx.cs:26

Selv om jeg har skrevet absolute URl'en, ser den ud, at måske i dll'en et eller andet sted står stadigvæk: C:\AspDotNet\webapps\xxxx\RefNummer.aspx
Jeg laver formularen i VS 2003 på localhost og så kopierer filerne fra ovenstående link til en FrontPage site (driftserveren) for at kunne publicere den på Internettet.

Jeg bliver meget glad at få hjælp...
Avatar billede snepnet Nybegynder
21. maj 2006 - 16:58 #1
C:\AspDotNet\webapps\xxxx\RefNummer.aspx.cs er bare en fysisk sti til den fil hvor der er fundet fejl - de url'er du bruger i dit program vil ikke ænder på det.

Det er lidt misvisende at du benytter .ToString() her:
Request.Cookies["myCookie".ToString()].Value

"myCookie" er jo en string - så
Request.Cookies["myCookie"].Value;
Burde kunne gøre det.

Det virker som om du bare ikke får gemt din cookie - hvornår gør du det i forhold til hvornår du redirecter?

Mvh
Avatar billede mema Nybegynder
21. maj 2006 - 18:02 #2
Hej snepnet,
Mærkelige ting er at dette program kører fint på en driftserver der tilgårs gennem FrontPage. Men efter jeg laver en iFrame i vores MCMS, så vises siden ikke.

I øvrigt er denne kode som ligger på selve RefNummer.aspx.cs er rigtigt:?
if (!IsPostBack)
{
lblID.Text = "Du er tildelt Ref.nr.: " + "<b>" + (Request.Cookies["myCookie".ToString()].Value ) +"</b>";
}
Avatar billede mema Nybegynder
21. maj 2006 - 18:05 #3
Undskyld, Du har allerede svaret på det sidste punkt i min sidste kommentar (I øvrigt...). Jeg skal nok prøve det nu.
Avatar billede mema Nybegynder
21. maj 2006 - 18:20 #4
Nej, desværre virker den heller ikke nu efter fjernelse af .ToString() fra koden.
Avatar billede mema Nybegynder
21. maj 2006 - 18:29 #5
Vedr. din sidste spørgmål:
Jeg gemmer min Cookie i formularen - sidste del i Button1_Click(....) efter:
Page.Validate();
if (Page.IsValid)
{
try
{
...
...
...
OleDbCommand GetLastID = new OleDbCommand("SELECT @@IDENTITY", conn);
conn.Open();
cmdInsert.ExecuteNonQuery();
double LastID = Math.Round(double.Parse(GetLastID.ExecuteScalar().ToString()),0);
HttpCookie objCookie = new HttpCookie("myCookie", LastID.ToString());
Response.Cookies.Add( objCookie );
conn.Close();       
Response.Redirect("http://www.xxxx.dk/xxxx/RefNummer.aspx");
Avatar billede snepnet Nybegynder
22. maj 2006 - 08:27 #6
Har du prøvet at checke cookie-mulighederne i det scenarie der ikke virker?
(du kan se lidt om det her)
http://www.dotnetjunkies.com/Tutorial/5608CD69-140B-4FD9-B30C-89DC156AA0CC.dcik

Hvis du bruger 2.0 kan du spørge lidt enklere:
if(Request.Browser.Cookies)
//...

Men ellers ... Kan du ikke bare bruge querystring til det istedet? (Det er da klart nemmere).

Mvh
Avatar billede mema Nybegynder
22. maj 2006 - 09:42 #7
Jeg har desværre ikke nogen erfaring for at vide hvodan jeg skal definere browser-capablilities. Den URL også fortæller lidt om det og artiklen går ud fra at man i forvejen har nogle erfaring med det. Linket til download af en eksempel virker heller ikke.
Avatar billede snepnet Nybegynder
22. maj 2006 - 10:06 #8
Du skal ikke definere dem - blot spørge på dem... Cookies kan du finde her:
Du kan spørge på cookies med Request.ServerVariables["cookies"]
Og som skrevet - hvis du benytter 2.0 - kan du spørge lidt nemmere:
Request.Browser.Cookies
Men hvad med det med at benytte din querystring istedet?
Mvh
Avatar billede mema Nybegynder
22. maj 2006 - 11:35 #9
Hej igen,
Jeg har oprettet en ny webform med en Label og har i Page_Load skrevet:
lblCookies.Text = Request.ServerVariables["cookies"];
Men det viser blank side, når jeg kører den i browseren.

For min egen opgave har jeg fundet en løsning og det er, at jeg har sat den label, som skulle vise beskeden om ID-nummeret nederst på selve formularen (i stedet for en ny side). Jeg har brugt den samme kode som har brugt for den anden side! Men OK. nu virker det, og jeg ved ikke faktisk hvorfor. Men det er ligemeget for øjeblikket.

Jeg skulle gerne bede om at sende et svar :-)
Avatar billede snepnet Nybegynder
22. maj 2006 - 13:53 #10
Hmm... Ok - du får et svar her, men sig til hvis du gerne vil have nogle eksempler eller noget (og i givet fald på hvad :o)
Håber din løsning holder hjem - ellers sig til.
Mvh
Avatar billede mema Nybegynder
22. maj 2006 - 14:54 #11
Jo, tak. Det skal jeg gøre.
Du kan også måske - hvis du havde tid - kunne kigge på mit oprettede spørgsmål: http://www.eksperten.dk/spm/710758
Der var ikke nogen som gad at hjælpe mig ved indtil nu :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester