SharePoint O365和Azure提供商托管应用程序中的后台任务/计时器作业

SharePoint O365和Azure提供商托管应用程序中的后台任务/计时器作业,azure,asynchronous,sharepoint-2013,csom,sharepoint-apps,Azure,Asynchronous,Sharepoint 2013,Csom,Sharepoint Apps,我正在为SharePoint O365构建一个提供商托管的应用程序,该应用程序托管在Azure中。我所有的逻辑都是通过CSOM完成的,更具体地说,是使用MVCWeb项目。目前,在AJAX调用控制器操作之后,应用程序正在执行一些品牌逻辑 如果我的层次结构中有很多子网站,这可能需要很长时间才能执行,这是不好的,因为虽然应用程序仍将处理我的请求,但离开我调用操作的页面将阻止我获得有关任务完成情况的任何反馈。这当然是因为请求的状态直接绑定到调用页面中该请求的回调。这也意味着有人可以很好地启动请求,刷新页

我正在为SharePoint O365构建一个提供商托管的应用程序,该应用程序托管在Azure中。我所有的逻辑都是通过CSOM完成的,更具体地说,是使用MVCWeb项目。目前,在AJAX调用控制器操作之后,应用程序正在执行一些品牌逻辑

如果我的层次结构中有很多子网站,这可能需要很长时间才能执行,这是不好的,因为虽然应用程序仍将处理我的请求,但离开我调用操作的页面将阻止我获得有关任务完成情况的任何反馈。这当然是因为请求的状态直接绑定到调用页面中该请求的回调。这也意味着有人可以很好地启动请求,刷新页面,然后再次启动它,因为我无法判断之前的请求是否仍在执行。此外,两个不同的用户可以启动同一个请求,导致该请求的逻辑同时执行两次。这两种情况都可能导致服务器端工件上出现一些严重的并发修改错误

因此,我需要的是找到一种方法来检查某个请求是否已经在运行,如果不是这样,则启动一个有状态和异步的请求。我能想到的最好的例子就是SharePoint O365自己的长时间运行任务机制:安装应用程序或创建新网站集等时间密集型任务可以从页面启动,任何后续刷新或访问该页面的操作都将显示当前正在运行的任务,一个甚至有时提供取消它的可能性,例如在应用程序安装中。该州还将自行更新,例如网站集创建完成时,我不确定这是否是客户端轮询或其他我不知道的机制的结果

我见过一些似乎很有前途的解决方案,比如使用or,尽管没有一个能够满足我上面列出的所有要求,或者似乎难以实现我想做的事情。我觉得计时工作可能会有所帮助,但我想听听你对这种情况的建议


感谢您的输入

尝试使用Azure Worker角色。使用CSOM和附带加载具有租户完全控制权限的SharePoint提供商托管应用程序。侧面加载部件使工作人员能够读取/写入SharePoint Online


侧面加载是通过/_layouts/appregnew.aspx和_layouts/appinv.aspx实现的。

我已经在使用一个全租户范围的应用程序,所以这是一个加号。最重要的是,我从来都不知道appinv.aspx,它看起来真的很有趣,无论是针对这个问题还是其他问题。我来看看。