Contrôle WebBrowser et les cookies
J'ai un problème avec contrôle WebBrowser et les cookies.
Tout d'abord ce qui se passe lorsque l'on navigue dans un navigateur Web normal (IE9 dans mon cas):
1.1. J'ai ouvert la page Web http://www.gmail.com.
- Je entrer mon nom d'utilisateur /mot de passe,
Je laisse la case "Rester connecté" décoché et cliquez sur "Signe dans",
IE9 ouvre ma page GMail avec tous mes mails de la liste. C'est OK.
1.2. En haut de la page GMail, il y a beaucoup de liens comme "Calendrier", "Documents", etc.
Quand je clique sur le "lien" Documents, mes documents page est ouverte dans un onglet séparé dans IE9. Pas de connexion supplémentaires informations nom /psw est demandé. C'est bien aussi.
Maintenant, ce qui se passe lorsque je le répète, tout ce qui dans le contrôle WebBrowser (j'ai créé un très simple VB.NET application avec un seul contrôle WebBrowser).
2.1. Dans l'événement load du formulaire le code suivant est exécuté:
Private Sub MyForm_Load(sender As System.Object, e As System.EventArgs)
Me.MyWebBrowser.Navigate("http://www.gmail.com")
End Sub
2.2. - Je saisir mon GMail informations de connexion (nom et psw) dans le contrôle WebBrowser,
2.3. Lorsque je clique sur le "lien" Documents, une nouvelle instance de IE9 est ouvert,
2.4. Au lieu de montrer une liste de mes documents, Google me demande de me connecter à nouveau dans une IE9 fenêtre. Pourquoi? Pourquoi je dois entrer mon mot de passe à nouveau?
Je pense qu'il ya quelque chose de mal avec des témoins, et ils ne sont pas définies correctement dans une étape 2.2. Avez-vous des idées de ce qui est mal et ce qui doit être fait pour obtenir des cookies réglé correctement?
Merci d'avance,
Sal
Informations supplémentaires:
J'ai mon WebBrowser NewWindow fonction d'événement mis en œuvre comme:
Private Sub MyWebBrowser_NewWindow(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles MyWebBrowser.NewWindow
Dim CookiesArr As String() = MyWebBrowser.Document.Cookie.Split(";")
For Each Cookie In CookiesArr
Dim Idx As Long = Cookie.IndexOf("=")
If Idx <> -1 Then
Dim CookieName As String = Cookie.Substring(0, Idx).Trim
Dim CookieValue As String = Cookie.Substring(Idx + 1).Trim
InternetSetCookie("http://www.google.com", Nothing, CookieName + " = " + CookieValue + "; expires = Sat,05-Jan-2013 00:00:00 GMT")
End If
Next
End Sub
Je crois que InternetSetCookie() la méthode doit stocker des cookies de façon permanente dans "C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies" répertoire pour les réutiliser lors de la page de Google, nécessitant une autorisation, est ouvert.
OriginalL'auteur Sal | 2012-03-09
Vous devez vous connecter pour publier un commentaire.
c'est parce que le contrôle de navigateur web est une ouverture d'un lien dans un autre IE9 fenêtre, à droite? Si vous l'ouvrez ou de l'ouvrir dans un autre navigateur de la fenêtre de contrôle dans votre Winforms programme, ou dans la même fenêtre où vous avez cliqué sur le lien, alors il devrait fonctionner correctement.
Qu'ils utilisent des cookies de session (en mémoire) de tenir vos informations de connexion, pas le genre écrit sur le disque dur, c'est pourquoi, lorsque vous exécutez un autre processus, l'information (dans la mémoire des cookies de session) ne sont pas présents ou propagées à la nouvelle procédure.
Donc, pour intercepter cliquant sur le lien et ouvrir dans un wb de la fenêtre de votre choix, vous devez intercepter l'événement newwindow, annuler la navigation et renavigate à l'aide .accédez à la bm de votre choix, si vous avez besoin d'aide avec ce laissez-moi savoir, mais il ya beaucoup en ligne.
Aussi, gardez à l'esprit que le contrôle de navigateur web utilise IE7 par défaut, même si vous avez installé IE9, ce qui peut être changé via le registre.
relisez mon troisième alinéa, la réponse est toujours là. Aussi, n'essayez pas de lire ou de réinitialiser les cookies, car c'est l'accès disque dur cookies je crois, pas de cookies de session. Si vous rediriger la nouvelle fenêtre demande à la seconde wb contrôle (lieu dans votre formulaire), alors il devrait fonctionner très bien, me faire? Rappelez-vous, annuler la navigation dans newwindow événement et obtenir l'URL à partir de l'e. Ou de l'expéditeur. Et faites un .accédez à la deuxième wb contrôle avec l'URL de u vient de recevoir de la nouvelle fenêtre de l'événement. Annuler Boolean devrait être dans e., mettre à true pour annuler. Laissez-moi savoir.
Je vous remercie pour votre aide, mais mon problème est que je NE VEUX pas ouvrir de nouveaux IE9 instance dans NewWindows événement. Je ne veux pas annuler de navigation par défaut avec un "e.Annuler = False", je suis d'accord que la nouvelle fenêtre IE sera ouvert, et je suis d'accord que certains cookies sont stockés dans mon disque local. Mon problème est que les témoins, mis en NewWindow de l'événement, n'ont aucune incidence sur le navigateur et la page de connexion est toujours ouvert.
avez-vous conscience que l'annulation dont je parle n'est que temporaire, et que vous êtes seulement l'annulation de sorte qu'il n'est pas ouvert dans la fenêtre en cours ou en externe IE9 fenêtre? Au fond, nous sommes d'annulation il ne rediriger que la navigation de la fenêtre de votre choix, qui est le deuxième WB contrôle sur votre formulaire, afin que la navigation n'est pas annulée à la fin de la journée. est-ce logique? parce que si vous n'avez pas annuler et fait la redirection (à l'aide .accédez à la deuxième WB de contrôle), puis il s'ouvre dans les deux endroits, dont je suppose que vous ne voulez pas, et ne sert aucun but. laissez-moi savoir.
OriginalL'auteur Erx_VB.NExT.Coder
Essayez D'Ajouter Ceci:
OriginalL'auteur Aggelos Y