ASP.NET MVC 2 Отмена асинхронного действия - PullRequest
1 голос
/ 09 июня 2010

В документации MSDN для с использованием асинхронного контроллера упоминается выбор асинхронного контроллера, когда вы хотите предоставить пользователям возможность отменять запросы.

Однако я не смог найти никакой документации, касающейся фактического разрешения пользователям отменять асинхронные запросы. Есть ли способ указать ASP.NET и / или инфраструктуре ASP.NET MVC, что запрос должен быть отменен?

Ответы [ 2 ]

2 голосов
/ 09 июня 2010

Если вызванный вами асинхронный API предоставляет способ отменить запрос (либо с помощью класса CancellationToken .NET 4, либо с помощью метода CancelAsync), вы должны вызвать его, чтобы отменить все выполняемые асинхронные операции. В противном случае вызовите AsyncManager.Finish (через свойство контроллера AsyncManager), чтобы заставить инфраструктуру MVC немедленно вызвать ваш метод XxCompleted. Обратите внимание, что AsyncManager.Finish действительно предназначен только в том случае, если вам нужно спасти запросы, которые у вас нет другого способа отмены (например, вызов BeginXx / EndXx без CancellationToken), и не всегда будет работать в других сценариях.

1 голос
/ 09 июня 2010

Время ожидания по умолчанию: 45 секунд , поэтому, если ответ не получен, он будет отменен сервером. Они не позволили пользователям отменить запрос, так как для отмены одного http-запроса вы создаете другой http-запрос, что является неправильным способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...