Las soluciones que he intentado fueron las siguientes:
1. Pagina con un iFrame (donde se mostrara el PDF) y una funcion javaScript que pregunta si el iFrame ya termino de cargar, de no hacerlo, hace una llamada a la misma pagina del reporte (mediante ajax) pero con un parametro para extender el tiempo del timeout de la session.
Problema de esta solucion: se queda dando vueltas en el ciclo while
Código Javascript:
Ver original
function comprobarFin(){ var hora1 = new Date(); var hora2 = new Date(); if ( document.getElementById("iframePDF").contentWindow.document.readyState == 'complete' ) { }else{ while (document.getElementById("iframePDF").contentWindow.document.readyState != 'complete'){ hora1 = new Date(); if (Math.floor((hora1-hora2)/1000)>=5){ ch.bind("printBatch.asp?accion=TIEMPO","callback()"); ch.send(); hora2 = new Date(); } } } }
y el browser que uso (firefox) me dice que el script pudo haberse quedado colgado.
2- He intentado separar el proceso de comprobacion de la pagina donde se mostrara el PDF (tambien llamado mediante ajax) pero el proceso no parece estar funcionando ya que me tira timeout
Código ASP:
Ver original
<% Dim fecha1,fecha2 fecha1 = now() fecha2 = now() while Session("printbatch") <> "CARGANDO" fecha1 = now() if DateDiff("s",fecha1,fecha2) => 50 then Session.Timeout = Session.Timeout + 1 fecha2 = now() end if wend %>
Alguien tiene alguna sugerencia para poder ayudarme a resolver este problema? la idea no es setear un valor alto del timeout sino que ese valor se vaya adaptando dependiendo de la longitud del reporte
Saludos