ventanas sirven quitar que porque para las internet google emergentes elementos desbloquear desactivar como chrome bloqueo bloqueador aparecen c# browser cookies webforms

sirven - Enviar cookies de la aplicación C#a una ventana emergente de Internet Explorer



ventanas emergentes chrome desbloquear (3)

Tengo una aplicación C # que tiene enlaces a ciertas funciones en una aplicación web que usa las mismas credenciales de inicio de sesión. Si el usuario ha iniciado sesión utilizando la aplicación y hace clic en un enlace, se abre una nueva ventana del navegador (generalmente IE pero puede ser solo el navegador predeterminado) y le pide que se autentique de nuevo.

¿Hay alguna forma de que la cuenta permanezca conectada ya sea en la aplicación C # o en una ventana separada del navegador? La aplicación web utiliza cookies para almacenar las variables de sesión de los usuarios para la autenticación, la aplicación C # tiene la misma información de sesión pero no en una cookie.

Esencialmente, necesito crear una cookie desde la información de sesión de la aplicación C # y pasarla a la nueva ventana del navegador.

¿Algunas ideas?


Puede usar el modo de sesión habitual.

p.ej:

Session.Add("<sessionName>", <variable which contains the session data>>

Si desea mantener el nombre de usuario que está en una variable llamada "Usuario", puede usar el siguiente código:

Session.Add("UserName", User);

Para validar esta sesión en su página web, use el siguiente código bajo el método page_lad.

if(Session["UserName"] != null) { ******** } else { ******* (you can redirect to your home page...) }


Solo he podido hacer esto para un control WebBrowser incrustado (ver el código a continuación) pero NO para la nueva ventana IE. Todavía no he encontrado una respuesta.

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData); string url = "http://www.google.com"; // write the session cookie InternetSetCookie(url, null, "abc=1"); webBrowser1.Navigate(url);


Creo que cualquier nueva instancia de ventana comenzará una nueva sesión y, por lo tanto, eliminará cualquier cookie de sesión que haya creado antes de abrir un nuevo navegador a través de Process.Start("iexplorer.exe", "www.msn.ca") o webBrowser1.Navigate("www.msn.ca", true) .

Sin embargo, finalmente encontré una solución a este problema. Implica lo siguiente:

  1. Crea tu propio navegador web que se ve casi exactamente como Internet Explorer. Consulte el siguiente enlace para obtener un código para un navegador básico y personalícelo según sea necesario.

    http://msdn.microsoft.com/en-us/library/ms379558(VS.80).aspx

    Solucioné el error reemplazando el RaftingStrip obsoleto con ToolStrip, ToolStripContainer. (Envíeme un correo electrónico si desea este código depurado. Lo publicaría pero creo que es demasiado largo para este foro).

    Para mí, agregué

    1. constructor para pasar la URL de destino, configurarla en la barra de direcciones, configurarla como página de inicio y también pasar la ficha de seguridad

    2. propiedades para habilitar / deshabilitar la barra de direcciones y las barras de búsqueda

    3. se agregaron los botones Cortar, Copiar, Pegar, Guardar como e Imprimir

    4. cambió el icono de progreso de "C #" a un reloj de arena

  2. En la sección de declaración del formulario del navegador web, agregue

    DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);

  3. En el navegador web, cargue y cree Create_a_new_tab () antes de la página web. Navigate () inserte las líneas a continuación que guardan el token en una cookie de sesión. (Esto también puede ser necesario en los eventos button_go_click y button_search_click si navega hacia un nuevo dominio. Personalmente, inhabilitaría las barras Dirección y Búsqueda si paso un token de seguridad).

    string url = comboBox_url.Text.Trim(); // write the session cookie string security_token = "my_session_id=12345" // should have been passed to constructor InternetSetCookie(url, null, security_token);

El usuario nunca sabrá la diferencia y usted tendrá control sobre qué características activar / desactivar o implementar.