21. juli 2008 - 09:53Der er
2 kommentarer og 1 løsning
Webbrowser session/cookie i c# applikation
Jeg har lavet en applikation der indehodler en webbrowser, og det fungerer nogenlunde fint.
Mit problem er, at der visse steder på hjemmesidne som programmet pakker ind forekommer link der udskriver indholdet. Disse links er lavet som Javascript popup's.
Når der klikkes på sådan et link bliver indholdet i det nye vindue ikke vist, da hjemmesiden kræver login.
Jeg kunne derfor forestille mig, at den session man bliver tildelt ved silent logon i applikationen ikke bliver sendt med til det nye vindue.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Dette skyldes at dit program bliver registreret som en egen browser. Når du trykker på et link som åbner et nyt vindue, åbnes dette i en anden browser (internet explorer), hvilket resulterer i at sessionen går tabt. Løsningen er at sørge for at dit program selv kan åbne popup vinduer. Desværre understøtter standard WebBrowser kontrollen ikke dette :-(
Men men, der er jo en løsning alligevel :-)
I stedet for at bruge standard WebBrowser kontrollen, skal du bruge en COM kontrol. For at tilføje den til dit projekt, højreklik et sted i toolboxen og tryk "Choose Items...". Inde i "Choose Toolbox Items" dialogen vælger du tabben "COM Components". Her finder du "Microsoft Web Browser" og sætter et flueben i den tilhørende checkbox, og trykker OK.
Nu skulle du gerne have en ekstra kontrol i toolboxen som hedder "Microsoft Web Browser". Drag/Drop denne ind på din form i stedet for den gamle WebBrowser kontrol. Når denne bliver tilføjet til din form, vil den som standard få navnet axWebBrowser1.
Der er nogle små forskelle på denne kontrol og standard WebBrowser kontrollen. F.eks. skal du bruge Navigate(string url) metoden i stedet for Url propertien for at gå til en webadresse.
Så langt så godt, men vi mangler stadig at håndtere popup vinduer. Først skal du lave en form du vil bruge til popup vinduer. Dette kan f.eks. bare være en form med en axWebBrowser som fylder hele vinduet. Marker denne AxWebBrowser som public. Lad os sige vi har lavet en sådan form, og at den hedder "PopupForm". På din originale form, skal du håndtere NewWindow2 eventet, som bliver affyret hver gang der skal åbnes et popup vindue. I eventhandleren for dette event skriver du følgende kode:
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.