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