Tengo una respuesta ASP de larga ejecución (en realidad una acción MVC) que quiero cancelar si el usuario se ha alejado. Creo que esto debería ser bastante simple:¿Cuándo se desacelera Response.IsClientConnected?
if(!this.Response.IsClientConnected)
{
Response.End();
}
Sin embargo, me he encontrado con various sources partir that this method is slow.
Entonces me encontré con mis propias pruebas (usando MVC mini profiler, aunque se puede utilizar su propia):
using (var step = MiniProfiler.Current.Step("Response_IsClientConnected"))
if(!this.Response.IsClientConnected)
{
Response.End();
}
que encontró que cada vez que llamo es consistentemente muy rápido: debajo de 1ms en configurar mi desarrollador. Esto es si es verdadero o falso.
¿En qué circunstancias se espera que Response.IsClientConnected
sea lento?
Tengo que soportar IIS6 - ¿Sería Response.IsClientConnected
más lento en eso?
¿Alguien sabe lo que está haciendo bajo las sábanas? En un nivel bajo, esperaría que la pila TCP/IP supiera si la conexión aún está allí, por lo que espero que esta verificación sea instantánea, pero ¿IIS tiene que hacer un trabajo adicional para verificar?
Genial, es un buen comienzo, pero no la respuesta. Lo votaré una vez que tenga uno. – Keith
Acabo de solicitar los detalles de implementación del método EcbIsClientConnected en los foros de IIS.NET. Espero que alguien allí lo sepa - http://forums.iis.net/t/1187030.aspx –
Saludos, aunque parece que la respuesta es "¡no te metas con eso!" Útil: - | – Keith