Когда 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 выполнить дополнительную работу для проверки?

10
задан Keith 1 February 2012 в 11:06
поделиться