Pregunta Ejecutar Azure WebJob desde el código


Creé una aplicación de consola cargada como Azure trigger Webjob. Está funcionando bien cuando lo ejecuto desde Azure Portal. Quiero ejecutar esto desde mi código C #. No quiero usar cola o bus de servicio. Solo quiero activarlo cuando el usuario realice una acción específica en mi aplicación web.

Después de buscar obtuve una solución para desencadenar el trabajo de un programado http://blog.davidebbo.com/2015/05/scheduled-webjob.html

¿Alguna idea de cómo ejecutar desde el código?


8
2017-07-13 08:11


origen


Respuestas:


Como dijo Justin, podemos usar WebJob API para lograr este requisito. Podríamos encontrar esta API de KUDU en: https://github.com/projectkudu/kudu/wiki/WebJobs-API. A continuación está mi código probado:

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) {

}

Funciona de mi lado. Espero eso ayude.


7
2017-07-14 05:18



Puede activar WebJob a través de la API de WebJob. C # código incluido en la siguiente publicación:

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)

8
2017-07-13 13:01