【发布时间】:2021-03-31 07:24:54
【问题描述】:
我使用了 Visual Studio 2019。我使用了 2 个 API 调用 我参考了下面的文件:
使用 Kudu API 更改 function.json https://github.com/projectkudu/kudu/wiki/REST-API
1.PUT https://{functionAppName}.scm.azurewebsites.net/api/vfs/{pathToFunction.json},标题:If-Match:“*”,正文:新的 function.json 内容 然后发送请求以应用更改
2.POST https://{functionAppName}.scm.azurewebsites.net/api/functions/synctriggers 两个api都是返回成功状态码
状态码:
API2 给出 201 表示文档成功完成同步触发以保存文件修改
代码如下:
using (var client = new HttpClient())
{
var creds = "credentials";
var credentials = Encoding.ASCII.GetBytes(creds);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(credentials));
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.TryAddWithoutValidation("If-Match", "*");
var data = new List<ChangeData>
{
new ChangeData{schedule="125255"}
};
string json = "{'schedule':'*/48 * * * * *'}";
var customerJson = JsonConvert.SerializeObject(data);
var content = new StringContent(customerJson, Encoding.UTF8, "application/json");
var response = client.PutAsync("https://********.scm.azurewebsites.net/api/vfs/home/site/wwwroot/Function7/function.json", content);
Console.WriteLine(response.Result);
/// var errorMessage = response..ToString();
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://******.scm.azurewebsites.net/api/functions/synctriggers"))
{
var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes("basestring"));
request.Headers.TryAddWithoutValidation("Authorization", $"Basic {base64authorization}");
var response3 = await client.SendAsync(request);
Console.WriteLine(response3);
}
我想更改 function.json 中的 schedule 值
【问题讨论】:
-
能否详细描述您的问题?你想更新什么?
-
好的,我编辑问题
-
能否请您检查一下您的功能是否是读取模型?
-
在 Azure 门户中,它显示“您的应用程序当前处于只读模式,因为您正在从包文件运行。要进行任何更改,请更新 zip 文件和 WEBSITE_RUN_FROM_PACKAGE 中的内容应用程序设置。”但我不知道如何解决这个问题
-
在该模式下,我们无法更新函数中的任何文件。如果你想更新你的函数,我们需要重新部署它。
标签: c# asp.net-core azure-functions azureportal kudu