Я создал службу с RESTful API в ASP.NET, размещенную в IIS. Внутри этого сервиса я хотел бы создать систему акторов с помощью Akka.NET.
При создании системы актеров:
var actorSystem = ActorSystem.Create("myActorSystem");
Выдается следующее исключение:
Первое случайное исключение типа «System.InvalidOperationException» произошло в System.Web.dll. Дополнительная информация: асинхронная операция не может быть запущена в это время. Асинхронные операции могут запускаться только в асинхронном обработчике или модуле или во время определенных событий в жизненном цикле страницы. Если это исключение произошло при выполнении страницы, убедитесь, что страница помечена как ‹% @ Page Async =" true "%>. Это исключение также может указывать на попытку вызвать метод «async void», который обычно не поддерживается при обработке запросов ASP.NET. Вместо этого асинхронный метод должен вернуть задачу, а вызывающий должен ее дождаться.
Система акторов по своей сути является параллельной системой с асинхронными сообщениями, которыми обмениваются акторы. Как объяснено здесь, эта система акторов не сможет выжить, если IIS отключит домен приложения, что, вероятно, является причиной возникновения вышеупомянутого исключения.
В этой статье объясняется, как запускать фоновые задачи в ASP.NET. Однако я не понимаю, как я могу использовать это для своей системы акторов, поскольку я не контролирую жизненный цикл фоновых задач, которые могут быть созданы Akka.NET.
Есть ли способ заставить эту работу работать, или мне следует отказаться от идеи наличия системы акторов в приложении ASP.NET?
РЕДАКТИРОВАТЬ: Я также видел вопрос в Stackoverflow о реализации службы REST используя Akka. Приветствуются любые советы по решению, аналогичному Spray toolkit, но работающему на Akka.NET.