我正在尝试在触发时向azure webjob发送多个参数。根据这个https://github.com/projectkudu/kudu/wiki/WebJobs-API#invoke-a-triggered-job,
我可以这样称呼:
POST /api/triggeredwebjobs/{job name}/run?arguments={arguments}
我尝试了几种方法来添加多个参数,例如:
?arguments=1&arguments=2
?arguments[]=1&arguments[]=2
?arguments[0]=1&arguments[1]=2
?arguments={1,2}
等,我尝试了几个更愚蠢的东西,并尝试使用表单数据。似乎没有任何工作。我的webjob只是拿起第一个参数。例如,当我这样做时:
static void Main(string[] args)
{
Console.WriteLine(args[0]);
Console.WriteLine(args[1]);
}
第一个适用于上面的例子,但后来我得到第二行的异常,说索引越界。有没有办法触发带有多个参数的webjob,如果有的话,我该如何实现呢?
答案 0 :(得分:3)
我认为你正在寻找的金块是:
run?arguments={arg1} {arg2}
完整的工作样本会读到这样的内容:
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://your-app-name.scm.azurewebsites.net/");
client.DefaultRequestHeaders.Accept.Clear();
//username and password from Publish Profile, can test via https://your-app-name.scm.azurewebsites.net/basicAuth
var userName = "$your-app-name";
var password = "go30T5qqBfl0mv3wzhezrkifrKrPEw78ZieLE0JfwYEZ1yx6wy3hDgygBvbM";
var encoding = new ASCIIEncoding();
var authHeader = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(encoding.GetBytes(string.Format($"{userName}:{password}"))));
client.DefaultRequestHeaders.Authorization = authHeader;
HttpResponseMessage response = await client.PostAsync($"api/triggeredwebjobs/YourTriggeredWebJob/run?arguments={arg1} {arg2}", new StringContent(""));
}
答案 1 :(得分:0)
参数应以空格分隔:string arguments = "arg1 arg2 arg3";