2016-07-13 4 views
7

Azure 트리거 Webjob으로 콘솔 애플리케이션 업로드를 만들었습니다. Azure Portal에서 실행할 때 잘 작동합니다. C# 코드에서이 코드를 실행하고 싶습니다. 대기열 또는 서비스 버스를 사용하고 싶지 않습니다. 사용자가 웹 앱에서 특정 작업을 수행 할 때 트리거하려고합니다.코드에서 실행 된 Azure WebJob 실행

검색 후 나는 코드에서 실행하는 방법에 예약 된 http://blog.davidebbo.com/2015/05/scheduled-webjob.html

어떤 생각에서 작업을 실행할 수있는 솔루션을 가지고?

답변

6

저스틴 말했듯이, 우리는이 요구 사항을 달성하기 위해 WebJob API를 사용할 수 있습니다. 이 KUDU API는 https://github.com/projectkudu/kudu/wiki/WebJobs-API에서 찾을 수 있습니다.

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

      } 

그것은 내 옆에서 작동 : 다음은 내 테스트 코드입니다. 희망이 도움이됩니다.

7

WebJob API를 통해 WebJob을 트리거 할 수 있습니다. C# 코드는 다음 포스트에 포함 된

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)