我正在开发一个sharepoint在线团队网站集。我想定义一个每天运行的工作来执行以下操作: -
现在,当我在SharePoint内部部署这样的任务时,我使用这种方法: -
1-我创建一个.net控制台应用程序,它与SharePoint REST API集成,获取相关项目,最后使用.NET WebClient
发送电子邮件,具体如下: -
//do the checks then send an email to the related group
using (MailMessage myMailMessage = new MailMessage())
{
SPOutboundMailServiceInstance smtpServer = currentsite.WebApplication.OutboundMailServiceInstance;
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(smtpServer.Server.Address);
myMailMessage.IsBodyHtml = true;
myMailMessage.Subject = subject;
myMailMessage.Body = body;
smtp.Send(myMailMessage);
//code goes here..
}
2-将控制台应用程序放在sharepoint服务器上。
3-使用Windows任务调度工具,我创建一个每天执行控制台应用程序的任务(例如,上午1点00分)。
所以现在在sharepoint online我不知道如何托管我的控制台应用程序+如何安排它?我已经在控制台应用程序中转换了所有代码,以使用客户端模块而不是服务器端模块。但我的问题是托管和安排控制台应用程序。我主要在Azure中阅读这些选项: -
但我不确定哪个appraoch更好?以及哪两个工具模仿使用Windows任务调度程序调度控制台应用程序的appraoch?现在我读了这篇关于Azure功能的文章https://anthonychu.ca/post/azure-functions-scheduled-executables/,但我对function.jso
文件做了什么感到困惑?并且不确定我是否可以使用这些工具运行标准控制台应用程序?还有一个UI来配置触发器调度,如在Windows任务调度程序的情况下?谢谢
正如Jason所说,功能是webjobs的继承者。 Azure Functions完全是为了实现WebJobs SDK的核心目的,将其作为服务托管,并使其易于使用其他语言。我们还在这里介绍了“无服务器”概念,因为这样做很有意义 - 我们知道我们的SDK如何扩展,因此我们可以为您做智能化的事情。而webjobs是在Web App中部署的后端控制台应用程序。
但我对
function.json
文件做了什么感到困惑?
包含该函数的配置元数据的function.json
文件。一个函数只能有一个触发器绑定,并且可以有多个输入/输出绑定。以下是每种触发类型的示例。你可以参考这个wiki。
要将控制台应用程序部署到Azure WebJobs,您可以参考此article来压缩您的控制台应用程序并上传它。要设置schedule trigger,您需要在控制台应用程序中添加settings.job
。
{
"schedule": "0 */15 * * * *"
}
对于Azure功能的部署控制台应用程序,您可以参考article,因为您提供了timetrigger绑定。
{
"bindings": [
{
"type": "timerTrigger",
"direction": "in",
"schedule": "*/15 * * * * *",
"runOnStartup": false
}
]
}
所以我建议使用Azure功能来托管。