Чтобы использовать асинхронные контроллеры, ваш контроллер должен наследовать от AsyncController:
public class WebsiteController : AsyncController
И тогда любое действие, использующее асинхронные методы, должно использовать формат
public void ActionNameAsync(int param)
public ActionResult ActionNameCompleted(int param)
Где ActionName - этоимя вашего действия и вместо функции Async используйте
AsyncManager.OutstandingOperations.Increment();
каждый раз, когда вы запускаете новый асинхронный метод, и
AsyncManager.OutstandingOperations.Decrement();
, когда метод завершается, после завершения всех ожидающих операций.он перейдет к функции Completed (обязательно укажите параметры, необходимые для завершенной функции в асинхронной функции, чтобы она знала, что передавать)
AsyncManager.Parameters["param"] = "my name";
Тогда использование атрибута AsyncTimeout фактическивлияет на функцию.Я не уверен, что произойдет, если вы попытаетесь применить этот атрибут к действию, отсутствующему в асинхронном контроллере.
Эти изменения не потребуют изменения каких-либо ссылок на действие в javascript ичто не так, как вы все равно просто запросили бы «ActionName», и он посмотрел бы, существует ли установочная версия Async / Completed, и если нет, он будет искать только это обычное действие и использовать то, что найдет.