¿Cuándo es Response.IsClientConnected lento?

Tengo una respuesta ASP de larga duración (en realidad, una acción MVC) que quiero cancelar si el usuario se ha alejado. Creo que esto debería ser bastante simple:

if(!this.Response.IsClientConnected)
{
    Response.End();
}

Sin embargo, me he encontrado convarias fuente comenzandoque este método es lento.

Así que realicé mis propias pruebas (usandoMVC mini profiler, aunque podrías usar el tuyo):

using (var step = MiniProfiler.Current.Step("Response_IsClientConnected"))
if(!this.Response.IsClientConnected)
{
    Response.End();
}

Eso descubrió que cada vez que lo llamo es consistentemente muy rápido: menos de 1 ms en mi configuración de desarrollador. Esto es si es verdadero o falso.

Bajo qué circunstancias esResponse.IsClientConnected se espera que sea lento?

Tengo que admitir IIS6 - wouldResponse.IsClientConnected ser más lento en eso?

¿Alguien sabe lo que está haciendo debajo de 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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta