2016-07-13 50 views
7

Ho creato un caricamento dell'applicazione della console come trigger Webjob di Azure. Funziona bene quando lo eseguo da Azure Portal. Voglio eseguire questo dal mio codice C#. Non voglio usare la coda o il bus di servizio. Voglio solo attivarlo quando l'utente esegue un'azione specifica nella mia app Web.Esegui Web di Azure attivato dal codice

Dopo la ricerca ho ottenuto una soluzione per innescare lavoro da un volo di linea http://blog.davidebbo.com/2015/05/scheduled-webjob.html

Qualsiasi idea di come eseguire dal codice?

risposta

6

Come ha detto Justin, possiamo usare WebJob API per raggiungere questo requisito. Potremmo trovare questa API KUDU a: https://github.com/projectkudu/kudu/wiki/WebJobs-API. Qui di seguito è il mio codice testato:

  HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://<web appname>.scm.azurewebsites.net/api/triggeredwebjobs/<web job name>/run"); 
      request.Method = "POST"; 
      var byteArray = Encoding.ASCII.GetBytes("user:password"); //we could find user name and password in Azure web app publish profile 
      request.Headers.Add("Authorization", "Basic "+ Convert.ToBase64String(byteArray));    
      request.ContentLength = 0; 
      try 
      { 
       var response = (HttpWebResponse)request.GetResponse(); 
      } 
      catch (Exception e) { 

      } 

Funziona dalla mia parte. Spero che sia d'aiuto.

7

È possibile attivare WebJob tramite l'API WebJob. C# codice incluso nel seguente post:

http://chriskirby.net/blog/running-your-azure-webjobs-with-the-kudu-api

HttpClient client = new HttpClient(); 
client.BaseAddress = new Uri("https://mysiteslot.scm.azurewebsites.net/api/"); 
// the creds from my .publishsettings file 
var byteArray = Encoding.ASCII.GetBytes("username:password"); 
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)); 
// POST to the run action for my job 
var response = await client.PostAsync("triggeredwebjobs/moJobName/run", null)