Retirar el tiempo de mi aplicación asp.net

Mi aplicación Asp.net genera un pdf dynamic. A veces esto toma un tiempo y es un proceso bastante pesado. En realidad no quiero que mis usuarios esperen el pdf, solo envíelo al correo después de que se genere.

Así que probé un servicio web. Estoy pasando una identificación (para obtener los datos de la base de datos) y algunas cadenas al método websercice.

Pero también con un servicio web (incluso con llamadas asíncronas) el cliente solo recibe su respuesta después de que se genera el pdf. Así que el usuario todavía tiene que esperar.

Así que estoy un poco atascado, debe haber una manera que estoy pasando por alto.

No necesita un servicio web para poder realizar invocaciones asíncronas.

Simplemente puede usar ThreadPool.QueueUserWorkItem() como un enfoque de “encender y olvidar” en la página ASPX, luego devolver una respuesta con algún tipo de “id de elemento de trabajo”, como un recibo o un número de pedido.

Genere el PDF en el WaitCallback que pase a QUWI. cuando el pdf está listo, WaitCallback puede enviar un correo electrónico, o lo que sea.


Utilice un servicio web si desea que la función sea accesible, fuera de la página web. No lo uses estrictamente para asincronía.

El problema es que en el código de la página ASP.NET, debe invocar el servicio web de forma sincrónica para que la página espere hasta que el servicio web vuelva. Debe intentar invocar el servicio web de forma asíncrona (o en el hilo diferente) y luego no esperar a que se complete. Por lo general, Visual Studio Proxy ya tiene sobrecargas asíncronas que puede usar.

Alternativamente, puede modificar su código de servicio web. Básicamente, cuando llega la solicitud a su método web, puede iniciar la generación de PDF en un hilo diferente para que su método web finalice indicando a su cliente (página en este caso) que la solicitud ha sido exitosa. progtwigdo para su procesamiento.

hay dos formas que yo conozco

Primeros caminos En el código detrás de asp.net (en el archivo xxx.aspx.cs) puede definir un método de anulación, luego puede llamar al método iniciando un hilo como el siguiente.

 protected void SenMail(object prms) { int id = int.Parse(prms.ToString()); //mail sending proces } //starting SendMail method asynchronous Thread trd = new Thread(SenMail); trd.Start(idValue); 

Segundo camino

Puede crear y enviar una página de remitente como “SendMail.aspx”, luego puede hacer una solicitud de ajax en javascript y no es necesario esperar ninguna respuesta. puede pasar el valor de id a la página aspx como parámetro de solicitud.