Когда Response.IsClientConnected работает медленно?
У меня есть длительный ASP-ответ (на самом деле действие MVC), который я хочу отменить, если пользователь ушел. Я думаю, что это должно быть довольно просто:
if(!this.Response.IsClientConnected)
{
Response.End();
}
Однако я сталкивалсяразличные источники началочто этот метод медленный.
Поэтому я провел свои собственные тесты (используяMVC мини-профилировщик, хотя вы могли бы использовать свой собственный):
using (var step = MiniProfiler.Current.Step("Response_IsClientConnected"))
if(!this.Response.IsClientConnected)
{
Response.End();
}
Оказалось, что каждый раз, когда я это называю, это всегда очень быстро: на моем разработчике меньше 1 мс. Это правда или нет.
При каких обстоятельствахResponse.IsClientConnected
ожидается медленным?
Я должен поддержать IIS6 - будетResponse.IsClientConnected
быть медленнее на этом?
Кто-нибудь знает, что он делает под одеялом? На низком уровне я ожидал бы, что стек TCP / IP будет знать, все еще ли соединение, поэтому я ожидал бы, что эта проверка будет мгновенной, но должен ли IIS выполнить некоторую дополнительную работу для проверки?