【发布时间】:2018-07-10 01:21:39
【问题描述】:
是否可以使用 Azure Fluent API 将 WebJob 添加到 WebApp?我没有找到任何描述这一点的文档。
【问题讨论】:
标签: azure azure-webjobs fluent
是否可以使用 Azure Fluent API 将 WebJob 添加到 WebApp?我没有找到任何描述这一点的文档。
【问题讨论】:
标签: azure azure-webjobs fluent
我相信答案是否定的,您需要使用Azure Kudu WebJob API
更多信息请见:
https://github.com/projectkudu/kudu/wiki/WebJobs-API
https://blogs.msdn.microsoft.com/benjaminperkins/2016/02/01/using-the-azure-webjob-api/
【讨论】:
正如Lachie所说,似乎没有Fluent API支持添加WebJobs,你可以使用WebJobs KUDU API来实现。
我为此做了一个演示。它在我的网站上正常工作。以下是我的详细步骤:
准备:
1.WebJob API 需要Basic Authentication 使用发布凭据,您可以在 azure 门户中访问您的 webapp 点击Get publish profile 并下载它以获取用户名和用户密码。
2.压缩要发布的WebJob文件。
步骤:
1.创建一个C#控制台项目。
2.在Program.cs文件中添加如下代码。
string userName = "$name";
string userPassword = "pass";
string webAppName = "webappname";
string webJobName = "webjobname";
var base64Auth = Convert.ToBase64String(Encoding.Default.GetBytes($"{userName}:{userPassword}"));
var file = File.ReadAllBytes(@"webjob zip file path");
MemoryStream stream = new MemoryStream(file);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Basic " + base64Auth);
client.DefaultRequestHeaders.Add("ContentType", "application/zip");
var baseUrl = new Uri($"https://{webAppName}.scm.azurewebsites.net/");
var requestURl = baseUrl + "api/continuouswebjobs/"+webJobName;
var httpContent = new StreamContent(stream);
httpContent.Headers.Add("Content-Disposition", "attachement;filename="+ webjob.exe);
var response2 = client.PutAsync(requestURl, httpContent).Result;
}
注意:filename 应该在 Content-Dispostion 标头中。这里我部署的是持续webjob,如果要部署trigger webjob,可以将continuouswebjobs改为triggeredwebjobs。
【讨论】: