Я создаю приложение для SharePoint (O365), размещенное в SharePoint, которое размещено в Azure. Я делаю всю свою логику через CSOM, более конкретно, используя веб-проект MVC. На данный момент у меня есть логика брендинга, выполняемая приложением после вызова AJAX к действию контроллера.Фоновые задачи/задания таймера в SharePoint O365 с приложением Azure для провайдера
Если у меня в моей иерархии много подсайтов, это может занять очень много времени, что плохо, потому что, хотя приложение все равно обработает мой запрос, оставив страницу, с которой я вызвал действие, будет предотвращать у меня от каких-либо отзывов о завершении задания. Это, конечно, потому, что состояние запроса напрямую связано с обратным вызовом этого запроса на вызывающей странице. Это также означает, что кто-то может очень хорошо запустить запрос, обновить страницу и снова запустить ее, так как я не могу сказать, выполняется ли предыдущий запрос. Кроме того, два разных пользователя могут запустить один и тот же запрос, что приведет к двум одновременным выполнению логики этого запроса. Обе ситуации могут привести к некоторым неприятным ошибкам одновременной модификации артефактов на стороне сервера.
Итак, мне нужно найти способ проверить, запущен ли какой-либо запрос, и если это не так, запустите тот, который является stateful и асинхронным. Самый лучший пример, который я могу придумать, - это просто механика долговременных задач SharePoint O365: задачи с интенсивным временем (например, установка приложения или создание нового семейства сайтов) могут запускаться с одной страницы, а любое последующее обновление или доступ к этой странице отображать задачу в текущий момент, даже иногда предоставляют возможность ее отмены (например, при установке приложения). Государство также будет обновляться самостоятельно (например, при завершении создания семейства сайтов), что я не уверен в результате опроса на стороне клиента или какого-либо другого механика, о котором я не знаю.
Я видел некоторые решения, которые казались многообещающими, например, с использованием Windows Services directly on Azure или this poor man's timer job, хотя ни один из них не соответствует всем требованиям, перечисленным выше, и/или кажется выполненным, чтобы реализовать то, что я сделал. У меня такое чувство, что Таймер Джобс потенциально может помочь, но я хотел бы получить ваш совет относительно ситуации.
Спасибо за ваш ввод
Я уже использую полное приложение для обладания областью, так что это плюс. Кроме того, я никогда не знал о appinv.aspx, это выглядит действительно интересно, будь то для этой проблемы. Я посмотрю. –