Avatar billede darknezzdell Nybegynder
21. juli 2008 - 09:53 Der 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.

Nogen der ved hvordan jeg gør det????
Avatar billede aaberg Nybegynder
21. juli 2008 - 10:53 #1
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:

void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
    PopupForm popup = new PopupForm();

    popup.axWebBrowser1.RegisterAsBrowser = true;
    e.ppDisp = popup.axWebBrowser1.Application;

    popup.Show();
}

Og, walla, et nyt vindue åbner. Og dette vindue har IKKE glemt sessionen. :-)
Avatar billede darknezzdell Nybegynder
21. juli 2008 - 12:16 #2
aaberg_cc, du er sq en guttermand!!!!!

Jeg havde selv ledt efter en forklaring på netop axWebBrowser, men har ikke kunne finde den. Det virker selfølgelig 112%, så du smider bare et svar.

200 velfortjente points til dig ;)
Avatar billede aaberg Nybegynder
21. juli 2008 - 12:27 #3
:-D Jeg er glad for at kunne hjælpe :-D
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