Что происходит в IIS / C# при прерывании запроса

поэтому я думаю о функциональности, где пользователь вставляет ссылку, а серверный код обходит предоставленную ссылку и отвечает содержимым этой ссылки (например, заголовком страницы, описанием, миниатюрой и т. д.).

пользователь может тем временем изменить ссылку, и при этом ajax-запрос должен быть прерван на стороне клиента.

Мне интересно, что именно происходит на сервере IIS и особенно с моим кодом C#.

  • это поток ответов прекращено?
  • теперь объект Response возвращает null или Response.Писать исключения?
  • это исключение в ответ поток просто whereaver это? (это даже не имеет смысла, но все равно)

4 ответов


если код сервера проверяет состояние Response.IsClientConnected, Он может остановить работу и дать пустой ответ, когда клиент прерывает запрос, в противном случае он будет просто заполните заявку, как обычно.

обработка запроса не будет прервана автоматически только потому, что ее больше никто не ждет. Серверный код должен активно проверять состояние запроса.


веб-сервер не знает, что клиент отменил запрос. Запрос все равно будет выполнен и ответ будет отправлен обратно. Сценарий на стороне клиента, который вы пишете, должен иметь возможность обрабатывать текущее состояние вашей страницы.

Если вы уверены, что вас не волнует ответ, я бы рекомендовал прервать запрос на стороне клиента:

xhr.abort()

Если вы закроете клиентскую сторону соединения до того, как будет написан ответ, появится сообщение об ошибке. Вы можете просто не обрабатывать ответ, когда он возвращается с сервера.


после отправки запроса на сервер IIS начнет выполнение кода на стороне сервера. Теперь сервер может решить, нужно ли выполнять код или нет.

во всем цикле страницы Вы можете проверить запрос.IsClientConnected как упоминалось Guffa и завершить выполнение.

Но да, это полностью зависит от сценария.

надеюсь, что это помогает.