gpt4 book ai didi

c# - 如何以编程方式启用/禁用 Azure Function

转载 作者:行者123 更新时间:2023-12-04 13:10:41 25 4
gpt4 key购买 nike

有没有办法以编程方式启用/禁用 Azure 功能?

我可以使用“管理”部分下的门户启用/禁用某个功能,这会导致请求发送到 https://<myfunctionapp>.scm.azurewebsites.net/api/functions/<myfunction>

JSON 负载看起来有点像:

{
"name":"SystemEventFunction",
"config":{
"disabled":true,
"bindings":[
// the bindings for this function
]
}
// lots of other properties (mostly URIs)
}

我正在门户之外创建一个管理工具,允许用户启用和禁用功能。

希望我可以避免手动创建 JSON 有效负载,所以我想知道 SDK(WebJobs??)中是否有具有此功能的东西。

最佳答案

根据 @James Z. 的回答,我在 C# 中创建了以下类,它允许您以编程方式禁用/启用 Azure 功能。

functionsSiteRoot 构造函数参数是 Functions 应用程序的 Kudu 根,例如 https://your-functions-web-app.scm.azurewebsites.net/api/vfs/site/wwwroot/

用户名和密码可以从您的函数的应用服务设置中的“获取发布配置文件”中获取。

public class FunctionsHelper : IFunctionsHelper
{
private readonly string _username;
private readonly string _password;
private readonly string _functionsSiteRoot;
private WebClient _webClient;

public FunctionsHelper(string username, string password, string functionsSiteRoot)
{
_username = username;
_password = password;
_functionsSiteRoot = functionsSiteRoot;

_webClient = new WebClient
{
Headers = { ["ContentType"] = "application/json" },
Credentials = new NetworkCredential(username, password),
BaseAddress = functionsSiteRoot
};
}

public void StopFunction(string functionName)
{
SetFunctionState(functionName, isDisabled: true);
}

public void StartFunction(string functionName)
{
SetFunctionState(functionName, isDisabled: false);
}

private void SetFunctionState(string functionName, bool isDisabled)
{
var functionJson =
JsonConvert.DeserializeObject<FunctionSettings>(_webClient.DownloadString(GetFunctionJsonUrl(functionName)));
functionJson.disabled = isDisabled;
_webClient.Headers["If-Match"] = "*";
_webClient.UploadString(GetFunctionJsonUrl(functionName), "PUT", JsonConvert.SerializeObject(functionJson));
}

private static string GetFunctionJsonUrl(string functionName)
{
return $"{functionName}/function.json";
}
}

internal class FunctionSettings
{
public bool disabled { get; set; }
public List<Binding> bindings { get; set; }
}

internal class Binding
{
public string name { get; set; }
public string type { get; set; }
public string direction { get; set; }
public string queueName { get; set; }
public string connection { get; set; }
public string accessRights { get; set; }
}

关于c# - 如何以编程方式启用/禁用 Azure Function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42400963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com