我想要做的是定期从我的Asp.Net MVC azure网站运行WebJob,而不必通过https://portal.azure.com/
我是否可以使用Azure资源浏览器为Azure Webjobs进行其余调用,以便我可以运行它?我看了,但我没有看到我创造的那个
答案 0 :(得分:3)
资源浏览器目前没有显示此内容,但我可以在此处为您提供API。要调用触发的WebJob,请执行类似这样的POST(使用空请求正文):
POST /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Web/sites/{site}/triggeredwebjobs/{jobname}/run?api-version=2015-08-01
还有一种方法可以通过Kudu API而不是通过ARM来实现,并记录在案here。
两者之间的区别在于您在第一种情况下使用ARM令牌进行身份验证,在第二种情况下使用基本身份验证发布凭据进行身份验证。但他们最终都做了同样的事情。
答案 1 :(得分:0)
为WebJobs部署配置控制台应用程序时,Visual Studio会安装Microsoft.Web.WebJobs.Publish NuGet程序包,并将计划信息存储在WebJobs项目的项目“属性”文件夹中的webjob-publish-settings.json文件中。以下是该文件的示例:
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "WebJob1",
"startTime": "2014-06-23T00:00:00-08:00",
"endTime": "2014-06-27T00:00:00-08:00",
"jobRecurrenceFrequency": "Minute",
"interval": 5,
"runMode": "Scheduled"
}
另一个选项TimerTriggerAttribute
:使用最新的WebJobs SDK,它支持基于相同的CRON表达格式按计划触发作业功能。您可以使用它来安排工作:
public static void TimerJob([TimerTrigger("00:01:00")] TimerInfo timerInfo, TextWriter log)
{
log.WriteLine("Scheduled job fired!");
}
其他选项:使用Webjob API:
Invoke a triggered job**
POST /api/triggeredwebjobs/{job name}/run
答案 2 :(得分:0)
使用Kudu Api ......这是一个粗略的例子......
ASCIIEncoding encoder = new ASCIIEncoding();
byte[] data = encoder.GetBytes(serializedObjHere);
var url = "https://{site}.scm.azurewebsites.net/api/triggeredwebjobs/{jobname}/run";
var request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = new System.Net.NetworkCredential("{username}", "{password}"); //you can get these in yoru publish profile
request.AllowWriteStreamBuffering = true;
request.Method = "POST";
request.Timeout = 60000; //60 seconds
request.KeepAlive = false;
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
var response = (HttpWebResponse)request.GetResponse();
response.Close();
response.Dispose();