4
votes

I am trying to setup a scheduled WebJob in Azure. I am able to deploy my webjob. I can run the webjob explicitly via the portal. However, I cannot seem to get it to run on a recurring schedule.

I want the job to run every 5 minutes. I realize this isn't free and I've changed to a paid tier and adjusted the maximum recurring threshold setting. At one point I was getting an error because of the settings.

When I deploy the WebJob shows up as 'On Demand' and it is not running recurring. What am I doing wrong?

Here is what I have:

webjob-publish-settings.json

{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "Shopping-Logs-WebJob",
  "startTime": "2016-01-07T00:00:00-08:00",
  "endTime": null,
  "jobRecurrenceFrequency": "Minute",
  "interval": 5,
  "runMode": "Scheduled"
}

Program.cs

public class Program
{
    static void Main()
    {
        var host = new JobHost();
        host.Call(typeof(Functions).GetMethod("ManualTrigger"));
    }
}

Functions.cs

public class Functions
{
    [NoAutomaticTrigger]
    public static void ManualTrigger(TextWriter log)
    {
        string storageAccountName = CloudConfigurationManager.GetSetting("AzureStorageAccountName");
        string storageKey = CloudConfigurationManager.GetSetting("AzureStorageAccessKey");

        SendMessage("String Fetched", (storageAccountName ?? String.Empty) + ":" + (storageKey ?? String.Empty));

        if (String.IsNullOrWhiteSpace(storageAccountName) || String.IsNullOrWhiteSpace(storageKey))
        {
            return;
        }

        StorageCredentials storageCredentials = new StorageCredentials(storageAccountName, storageKey);
        CloudStorageAccount storageAccount = new CloudStorageAccount(storageCredentials, true);
    }

    private static void SendMessage(string subject, string message = null)
    {
        // sends an email. It works when I run the job explicitly in the portal
    }
}

I also just found this in the jobschedule logs. What credentials is it looking for?

Http Action - Response from host '[mysite].scm.azurewebsites.net': 'Unauthorized' Response Headers: Date: Mon, 25 Jan 2016 22:02:01 GMT
Server: Microsoft-IIS/8.0
WWW-Authenticate: Basic realm="site"
 Body: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>  <title>401 - Unauthorized: Access is denied due to invalid credentials.</title>  <style type="text/css">  <!--  body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}  fieldset{padding:0 15px 10px 15px;}   h1{font-size:2.4em;margin:0;color:#FFF;}  h2{font-size:1.7em;margin:0;color:#CC0000;}   h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}   #header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;  background-color:#555555;}  #content{margin:0 0 0 2%;position:relative;}  .content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}  -->  </style>  </head>  <body>  <div id="header"><h1>Server Error</h1></div>  <div id="content">   <div cla
2
Did you managed to find an answer?BrunoMartinsPro

2 Answers

4
votes

You can include settings.job file into your webjob project with content:

{
  "schedule": "0 */5 * * * *"
}

to run it every 5 minutes.

More information here: https://github.com/projectkudu/kudu/wiki/Web-jobs#scheduling-a-triggered-webjob

1
votes

The solution was to go into the scheduler and update it to use 'Basic' authentication using the deployment credentials.

The solutions using the CRON syntax or Settings.job file did not work. VS2015 wouldn't even deploy it.