después de aproximadamente un minuto y medio
No es su problema. Esta es una aplicación web? Un minuto y medio es muy largo tiempo para una aplicación web para responder a una solicitud. Lo suficiente como para que no valga la pena dedicarse a varios trucos para que sea una especie de trabajo.
Descargue este proceso para que sea más asíncrono con la aplicación web. La naturaleza de las aplicaciones web es que deben recibir una solicitud y responder de manera oportuna. Lo que tienes aquí es un proceso de larga duración que no puede responder de manera oportuna. La aplicación web puede facilitar las interacciones con los datos, pero no debe manejar directamente el procesamiento de los mismos en la solicitud/respuesta directamente.
¿Cómo interactúa la aplicación web con el proceso? ¿Simplemente lo inicia o proporciona información para que comience el proceso? Yo recomendaría que el proceso en sí sea manejado por algo así como un Servicio de Windows o tal vez una Aplicación de consola. Cuanto más desacoplado de la aplicación web, mejor. Ahora, dado que no sé nada sobre el proceso en sí, estoy haciendo algunas suposiciones sobre su comportamiento ...
La aplicación web puede recibir una solicitud para iniciar el proceso, junto con la información necesaria para el proceso. Puede almacenar esto en una base de datos con un valor de estado (pendiente, en cola, etc.) y luego responder al usuario (de manera oportuna) de que la solicitud se ha recibido y el proceso se ha puesto en cola. La aplicación web puede tener una página que verifique el estado para que el usuario pueda ver cómo le está yendo al proceso (si se inicia, cuántos registros ha pasado, etc.).
La aplicación fuera de línea (Servicio de Windows, et al) simplemente supervisaría esa base de datos para procesar los datos de la cola nueva. Cuando lo ve, actualiza el estado (ejecución, procesamiento, etc.) y proporciona cualquier retroalimentación relevante durante el proceso (número de registros procesados, etc.) actualizando esos datos. De modo que la aplicación fuera de línea y la aplicación web interactúan con los mismos datos, pero no de una manera que bloquee el hilo de la aplicación web y evite una respuesta para el usuario.
Cuando el proceso finaliza, el estado se actualiza nuevamente. La aplicación web puede mostrar que está terminada y proporcionar un enlace para descargar los resultados.El proceso fuera de línea incluso podría enviar un correo electrónico al usuario cuando esté terminado, o tal vez la aplicación web puede tener algún tipo de sistema de notificación (estoy imaginando los pequeños iconos de notificación en Facebook) que alertaría al usuario sobre la nueva actividad.
De esta manera, el hilo no se bloquea, el usuario puede seguir interactuando con la aplicación (incluso si hay algo con lo que interactuar), etc. Y obtiene otros beneficios adicionales, también. Por ejemplo, los resultados del proceso se guardan en la base de datos y se hace un seguimiento histórico de forma automática.
la versión de servidor de Windows (IIS) es el servidor en vivo usando? –
Creo que es 7.5. – Rivka
He tenido el mismo problema y sucedió después de menos de un segundo. Como en tu caso, solo apareció en un servidor determinado. Resultó que solo sucedió mientras teníamos pipes ('|') en la URL de la solicitud GET. Al eliminar o codificar las tuberías, el problema ya no aparece. – chiccodoro