您如何以编程方式触发azure函数以C#代码运行?

时间:2019-02-05 18:00:29

标签: c# azure azure-functions

我要编写一个涉及手动运行功能的集成测试,相当于在计时器触发器上按Azure中的此按钮...

enter image description here

这可以通过C#以编程方式从单独的代码库到功能代码本身完成吗?目前,我无法访问功能代码,但可以访问azure。

或者,我可以从代码中更新计划,以便立即触发吗?

到目前为止,我一直在努力寻找通过sdk,api调用或powershell脚本执行此操作的方法。希望我缺少明显的东西

非常感谢,

2 个答案:

答案 0 :(得分:3)

您可以创建一个HTTP trigger并从c#代码中调用它。

示例代码:

[FunctionName("HttpTriggerCSharp")]
public static async Task<HttpResponseMessage> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, 
    ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    // parse query parameter
    string name = req.GetQueryNameValuePairs()
        .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
        .Value;

    // Get request body
    dynamic data = await req.Content.ReadAsAsync<object>();

    // Set name to query string or body data
    name = name ?? data?.name;

    return name == null
        ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
        : req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
}

答案 1 :(得分:2)

我找到了我想要的东西-https://docs.microsoft.com/en-us/azure/azure-functions/functions-manually-run-non-http

这使我能够通过api调用以编程方式在Azure中手动触发非HTTP功能(例如计时器触发)。