Насколько я понимаю, у вас есть непрерывный веб-джоб триггера, который используется для мониторинга блоба. И теперь вы хотите запустить веб-работу один раз, чтобы что-то сделать при запуске веб-работы. Но ваше веб-задание не будет запущено, если на блобе, который вы хотите отслеживать, не будет обновлений.
Способ реализовать это - создать еще один веб-джоб вручную, чтобы выполнить необходимые действия и запустить триггер непрерывного блоба. Затем выполните webjob. Как показано ниже: ConsoleApp 12 - консольное приложение C #, которое используется для выполнения необходимых процессов, и после завершения процесса запустите веб-задание непрерывного запуска BLOB-объекта. Я пишу образец для вас:
using Microsoft.WindowsAzure.Storage;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp12
{
class Program
{
static void Main(string[] args)
{
var containerName = "<your container name>";
var blobName = "<blob name>";
var StorageConnStr = "<storage account connection string>";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(StorageConnStr);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(containerName);
var blockBlob = container.GetBlockBlobReference(blobName);
//after get the blob , do your custom work here..
//With all work is done ,start blobtriggerd webjob to monitor this blob
using (var client = new WebClient())
{
String userName = "<webapp user name>";
String passWord = "<webapp password>";
client.Credentials = new System.Net.NetworkCredential(userName, passWord);
string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(userName + ":" +passWord));
client.Headers[HttpRequestHeader.Authorization] = "Basic " +credentials;
var response = client.UploadData("<webhook url which end with start>", "POST", new byte[0]) ;
var responseString = Encoding.Default.GetString(response);
}
}
}
}
Вы можете найти URL-адрес, имя пользователя и пароль веб-крючка здесь:
Есть одна вещь, котораяВы должны знать, что вы должны изменить свой конец URL-адреса webhook на start:
https://<your app name>.scm.azurewebsites.net/api/continuouswebjobs/<your webjob name>/start
вместо исходного webhook, заканчивающегося run
:
https://<your app name>.scm.azurewebsites.net/api/continuouswebjobs/<your webjob name>/run
, поскольку у непрерывных веб-заданий нет функции запуска.
Это результат, если я запускаю веб-задание вручную: как вы можете видеть работу, как выполненную (выводите содержимое BLOB-объекта здесь для демонстрации) и другую непрерывную работу. Webjob был запущен, и он отлично работает для меня.
Надеюсь, это поможет.