Ho una risposta ASP di lunga durata (in realtà un'azione MVC) che desidero annullare se l'utente ha navigato. Penso che questo dovrebbe essere abbastanza semplice:Quando è Response.IsClientConnected lento?
if(!this.Response.IsClientConnected)
{
Response.End();
}
Tuttavia ho incontrato various sources partire that this method is slow.
Così ho eseguito i miei test (utilizzando MVC mini profiler, anche se si potrebbe utilizzare il proprio):
using (var step = MiniProfiler.Current.Step("Response_IsClientConnected"))
if(!this.Response.IsClientConnected)
{
Response.End();
}
che ha trovato che ogni volta che lo chiamo io è sempre molto veloce: in 1ms sul mio sviluppatore istituito. Questo è se è vero o falso.
In quali circostanze è previsto che Response.IsClientConnected
sia lento?
Devo supportare IIS6 - Response.IsClientConnected
dovrebbe essere più lento?
Qualcuno sa cosa sta facendo sotto le coperte? A un livello basso mi aspetterei che lo stack TCP/IP sappia se la connessione è ancora presente, quindi mi aspetto che questo controllo sia istantaneo, ma IIS deve fare qualche altro lavoro da controllare?
Cool, questo è un buon inizio, ma non la risposta. Lo voterò una volta che ne avrò uno. – Keith
Ho appena chiesto i dettagli di implementazione del metodo EcbIsClientConnected sui forum IIS.NET. Spero che qualcuno sappia - http://forums.iis.net/t/1187030.aspx –
Cheers, anche se sembra che la risposta sia "non scherzare!" Utile: - | – Keith