我正在从应用服务环境中托管的 WebApp 调用 Web 作业。我用来调用的代码如下:
string userName = "$xxxx";
string userPassword = "xxxxx";
string webJobName = "xxxx";
var unEncodedString = String.Format($"{ userName}:{ userPassword}");
var encodedString = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(unEncodedString));
string URL = string.Format("https://xxxx.scm.azurewebsites.net/api/triggeredwebjobs/" + webJobName + "/run?arguments={0}", jobId.ToString());
System.Net.WebRequest request = System.Net.WebRequest.Create(URL);
request.Method = "POST";
request.ContentLength = 0;
request.Headers["Authorization"] = "Basic " +encodedString;
response = request.GetResponse();
我正在调用一个 webjob,它是一个控制台应用程序。我如何处理控制台应用程序中的参数如下:
static void Main(string[] args)
{
//
var id = 0;
if (args.Length > 0)
{
if (!int.TryParse(args[0].ToString(), out id))
id = 0;
}
if (id > 0)
{
EmailJobExecution emailServ = new EmailJobExecution();
EmailJobDBContext jobDB = new EmailJobDBContext();
var jobs = jobDB.getActiveJob(id);
List<string> logs = new List<string>();
emailServ.ExecuteJob(jobs, out logs);
foreach (var item in logs)
{
Console.WriteLine(item);
}
}
}
问题是我可以在 Webjob 仪表板中看到调用了 webjob 但没有传递参数。日志显示为:
[05/30/2017 11:18:51 > 738495:SYS INFO] 状态更改为正在初始化
[05/30/2017 11:18:51 > 738495: SYS INFO] 使用脚本主机 - 'WindowsScriptHost' 运行脚本'run.cmd'
[05/30/2017 11:18:51 > 738495:SYS INFO] 状态更改为正在运行
[2017 年 5 月 30 日 11:18:51 > 738495:信息]
[05/30/2017 11:18:51 > 738495: 信息] D:\local\Temp\jobs\triggered\xxxxx\rwjgkw42.ann>xxxx.EXE
[05/30/2017 11:18:51 > 738495:SYS INFO] 状态更改为成功
如果我去应用服务编辑器并像这样修改 run.cmd:xxxx.EXE 1
(1 是参数)然后我控制台接受参数并像这样记录:
[05/30/2017 10:17:26 > 738495:SYS INFO] 状态更改为正在初始化
[05/30/2017 10:17:27 > 738495: SYS INFO] 使用脚本主机 - 'WindowsScriptHost' 运行脚本'run.cmd'
[05/30/2017 10:17:27 > 738495:SYS INFO] 状态更改为正在运行
[05/30/2017 10:17:27 > 738495:信息]
[05/30/2017 10:17:27 > 738495: 信息] D:\local\Temp\jobs\triggered\xxxx\bvck11x1.f3v>xxx.EXE 1
[2017 年 5 月 30 日 10:17:32 > 738495:信息] 2017 年 5 月 30 日上午 10:17:27:第 1 号工作开始
[2017 年 5 月 30 日 10:17:32 > 738495:信息] 消息计数:1
[2017 年 5 月 30 日 10:17:32 > 738495:信息] 1:好的
[05/30/2017 10:17:32 > 738495:信息] 状态计数:1
[2017 年 5 月 30 日 10:17:32 > 738495:信息] 2017 年 5 月 30 日上午 10:17:32:1 号作业已完成
[05/30/2017 10:17:32 > 738495:SYS INFO] 状态更改为成功
即使我在 Postman 中运行 URL,参数也不会通过。
请帮我解决这个问题。
2017 年 5 月 31 日更新:
Webjobs 的 Zip 包具有以下内容:
- 运行.cmd
- xxxx.EXE
在@SuwatCh 的指导下,我删除了Zip 包,
run.cmd
只留下了*.exe
Zip 包,然后创建了 WebJob,终于成功了!