Hola Mariano,

Si bien estas usando ajax en el sentido especifico de la pagina, no me refería 
a eso y te pido que te olvides de lo que dije porque no estaba en contexto.

 

Ahora, lo que vos tenes que te hacer debería funcionar (configuración mas o 
configuración menos lo deberías poder hacer), sin embargo no es lo optimo.

En términos generales, tampoco seria lo optimo que uses un HttpWebRequest o un 
WebClient o cosas similares. 2 razones que se me ocurren:

 

1) Si haces esto lo que va a pasar es que el thread con el que estes ejecutando 
paginaMaster.aspx se va a bloquear esperando que termine de ejecutarse tu 
request,  y como a IIS le va a llegar otro request (a paginaReporte.aspx) va a 
tener que utilizar otro thread. Entonces vas a estar utilizando 2 threads para 
ejecutar un solo request, y encima uno lo vas a tener sin hacer nada. Si a esto 
le sumas que IIS limita la cantidad de threads simultaneos, y el costo que 
tiene levantar un thread, yo te diría que vas a bajar la performance de esta 
página en particular a la mitad. Sumandolo el gran riesgo que te voy a decir en 
el pto 3.

 

2) Cuando vos haces un request usando un HttpWebRequest, o el MSXML2.XMLHTTP30 
o lo que sea, vas a estar haciéndolo como si usases un browser (como ya había 
dicho Carlos). Si se hace un request usando un browser, vas a estar ejecutando 
de nuevo todo el sistema de autenticación y autorización de asp.net, vas a 
estar ejecutando todos los HttpModules de nuevo e incluso podes llegar a crear 
sin darte cuenta un nueva Session que te va a estar pesando durante los 
próximos 20 minutos. Ahora, si a vos te interesa usar alguno de los HttpModules 
específicamente (por ejemplo el del OutputCache) lo vemos en particular, por 
posiblemente convenga hacerlo manualmente.

 

3) Sumando estas 2 cosas, vas a tener un problema que te puede tirar la 
aplicación abajo. Suponete que IIS atiende máximo 100 requests simultaneos (no 
me acuerdo cual es el default), cuando vos tengas 99 requests ejecutándose, y 
un usuario entre en paginaMaster.aspx, la pagina va a hacer internamente el 
request 101 y IIS lo va a encolar. Ahora, ni el request 100 ni el 101 se van a 
ejecutar hasta que otro termine, provocando que los request encolados se 
empiece a procesar mas lentamente (ahora tenes 99 y no 100 threads 
simultaneos!), esa lentitud adicional va a crear un entorno mas propenso a que 
se encolen mas request. Creo que podes imaginarte como sigue, un pequeña 
lentitud va a hacer al servidor mas lento aun, provocando que se vuelva mas 
lento hasta que básicamente explote todo J. En el peor de los casos podrías 
llegar a tener 100 requests a paginaMaster.aspx ejecutandos, en donde los 100 
request subyacentes a paginaReporte.aspx estén encolados, provocando que no se 
procese absolutamente nada y acumulando mas requests a la cola.

 

Bueno, creo que la explicación es mas complicada que la solución :P.

Te recomiendo que uses el método:

void 
<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Void>
  Execute 
<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Web:2.0.0.0:b03f5f7f11d50a3a/System.Web.HttpServerUtility/Execute(String,System.IO.TextWriter,Boolean)>
 (string 
<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String>
  path, TextWriter 
<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.TextWriter>
  writer, bool 
<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Boolean>
  preserveForm)

 

Que lo podes encontrar dentro de HttpServerUtility (o de forma práctica en: 
HttpContext.Server)

 

De esa forma lo que haces es renderizar toda la pagina en memoria (en realidad 
podría ser en cualquier Stream: un archivo, la red, etc, etc), pero:

-          Usas el mismo thread que la pagina inicial

-          Te salteas toda la parte de autenticación y autorización que ya esta 
hecha (no la haces 2 veces)

-          Te evitas encriptar paginaReporte.aspx, para desencriptarla dentro 
de paginaMaster.aspx y volverla a encriptar para mandársela al cliente.

-          Toda la ejecución se mantiene dentro del entorno de .net, no estas 
saliendo por TCP para hacer un request al IIS y volviéndote a meter en el mismo 
servidor.

 

La única desventaja es: las 2 paginas tienen que estar dentro del mismo 
servidor, y más específicamente dentro del mismo application domain (no estoy 
del todo seguro si es la palabra correcta, básicamente tienen que estar bajo el 
mismo web.config y carpeta BIN las 2 paginas)

 

Si necesitas un ejemplo avis y lo hago/busco.

 

Saludos,

Diego

 

 

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Mariano 
Selvaggi
Sent: Martes, 15 de Julio de 2008 10:12 p.m.
To: [email protected]
Subject: [puntonet] Objeto MSXML2.XMLHTTP30 en sitios con SSL

 

Hola Diego,

 

Gracias por contestar. Siempre estoy en el mismo dominio. Es decir, intento 
acceder a una pagina del mismo server. Supone que mi AJAX esta en la pagina.

 

https://sales.mariano.com/paginaMaster.aspx

 

Entonces, dentro de esa pagina intento acceder a una pagina en el mismo server:
                                https://sales.mariano.com/paginaReporte.aspx

 

O sea, ya me autentique en el sitio, no entiendo porque razon me esta fallando.

 

Saludos

 

----- Mensaje original ----
De: Diego Jancic <[EMAIL PROTECTED]>
Para: [email protected]
Enviado: martes 15 de julio de 2008, 17:02:18
Asunto: [puntonet] Objeto MSXML2.XMLHTTP30 en sitios con SSL

Hola,
Me parece que el problema lo vas a tener siempre que cambies de
dominio (en relacion con la pagina donde esta el codigo ajax)...
Intenta hacer una pagina, que la abris mediante https y ahi pones tu
JS (usando una url relativa, sin incluir https://dominio.com 
<https://dominio.com/> )

Porque de la forma que lo estas haciendo, no te deberia andar en
ningun browser moderno (salvo que me este olvidando, pero me llama la
atencion..)

Saludos!,
Diego

2008/7/15 Mariano Selvaggi <[EMAIL PROTECTED]>:
> Hola Lista,
>
>
>
> Tengo un gran problema, a lo mejor algunos de ustedes conoce la solucion.
> Tengo un pequeño proceso que basicamente hace lo siguiente:
>
>
>
> Dim url As String = "https:// ......."
>
> Dim objxML As New MSXML2.XMLHTTP30
>
> Dim rst As String = ""
>
>
>
> objxML.open(
>
> "GET", url, False)
>
> Try
>
>    objxML.send()
>
>    rst = objxML.responseText
>
> Catch ex As Exception
>
>    rst = ex.Message
>
> End Try
>
> Response.Write(rst)
>
> objXML =
>
> Nothing
>
>
>
> Cuando lo hago en una pagina que no es https me funciona perfecto, el
> problema lo tengo ahora en el servidor de produccion que tiene SSL.
>
> Cualquier ayuda sera muy bien bienvenida. Muchas gracias!!
>
> ________________________________
> ¡Buscá desde tu celular! Yahoo! oneSEARCH ahora está en Claro
> http://ar.mobile.yahoo.com/onesearch

 

  _____  


¡Buscá desde tu celular! Yahoo! oneSEARCH ahora está en Claro
http://ar.mobile.yahoo.com/onesearch

Responder a