web-dev-qa-db-ja.com

コードからトリガーされたAzureWebJobを実行する

AzureトリガーWebジョブとしてコンソールアプリケーションのアップロードを作成しました。 Azure Portalから実行すると、正常に動作しています。これをC#コードから実行したいと思います。キューやサービスバスを使いたくない。ユーザーがWebアプリで特定のアクションを実行したときにトリガーしたいだけです。

検索した後、スケジュールされたジョブをトリガーするソリューションを取得しました http://blog.davidebbo.com/2015/05/scheduled-webjob.html

コードから実行する方法はありますか?

10
Muhammad zubair

Justinが言ったように、WebJobAPIを使用してこの要件を達成できます。このKUDUAPIは次の場所にあります: 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) {

}

それは私の側で動作します。それが役に立てば幸い。

11
Jambor - MSFT

WebJobAPIを介して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)
8
Justin Patten