Mam długo działającą odpowiedź ASP (w rzeczywistości działanie MVC), którą chcę anulować, jeśli użytkownik odszedł. Myślę, że to powinno być dość prosta:Kiedy usługa Response.IsClientConnected jest wolna?
if(!this.Response.IsClientConnected)
{
Response.End();
}
Jednak Natknąłem various sources począwszy that this method is slow.
Więc wpadłem własne testy (używając MVC mini profiler, choć można użyć własnych):
using (var step = MiniProfiler.Current.Step("Response_IsClientConnected"))
if(!this.Response.IsClientConnected)
{
Response.End();
}
To okazało się, że za każdym razem ja to nazywam to konsekwentnie bardzo szybko: poniżej 1ms na mój deweloper skonfigurować. To jest, czy jest to prawda czy fałsz.
W jakich okolicznościach oczekuje się, że powolny będzie Response.IsClientConnected
?
Muszę obsługiwać IIS6 - czy wolałbym na tym Response.IsClientConnected
?
Czy ktoś wie, co robi pod kołdrą? Na niskim poziomie oczekiwałbym, że stos TCP/IP dowie się, czy połączenie jest nadal dostępne, więc spodziewam się, że ta kontrola będzie natychmiastowa, ale czy usługi IIS muszą wykonać dodatkową pracę, aby to sprawdzić?
Fajnie, to dobry początek, ale nie odpowiedź. Wezmę to głos, gdy już go mam. – Keith
Właśnie poprosiłem o szczegóły implementacji metody EcbIsClientConnected na forach IIS.NET. Mam nadzieję, że ktoś tam wie - http://forums.iis.net/t/1187030.aspx –
Wiwaty, chociaż wygląda na to, że odpowiedź brzmi: "nie zadzieraj z tym!" Pomocne: - | – Keith