如何创建和使用基于 HTTP Tiggered 的 WebJob

问题描述 投票:0回答:1

所以我想创建一个基于 HTTP 触发的 Web 作业。这是我的示例代码

using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

public static class HttpTriggerFunction
{
    [FunctionName("HttpTriggerFunction")]
    public static async Task<IActionResult> Run(
        [Microsoft.Azure.WebJobs.HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");

        // Retrieve a query parameter (example: name)
        string name = req.Query["name"];

        // For POST request, read the body as JSON
        if (string.IsNullOrEmpty(name))
        {
            using (StreamReader streamReader = new StreamReader(req.Body))
            {
                var requestBody = await streamReader.ReadToEndAsync();
                dynamic data = JsonConvert.DeserializeObject(requestBody);
                name = name ?? data?.name;
            }
        }

        // Return a response
        return name != null
            ? (ActionResult)new OkObjectResult($"Hello, {name}")
            : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
    }
}

现在的问题是如何调用这个触发器。 我没有找到任何与此相关的文档

假设 应用程序服务:https://[名称].[位置].azurewebsites.net/

网络作业:https://[名称].scm.[位置].azurewebsites.net/

我尝试将两个网址都卷曲为 curl -x "https://[名称].[位置].azurewebsites.net/api/HttpTriggerFunction?name=John" curl -x "https://[名称].scm.[位置].azurewebsites.net/api/HttpTriggerFunction?name=John"

但没有得到任何结果

.net azure-webjobs azure-webjobssdk azure-webjobs-triggered
1个回答
0
投票

通过您的代码,很明显您正在创建 Azure Functions Http 触发器。

  • 您需要将此函数部署到 Azure Functions,而不是部署到 Azure 应用服务。

enter image description here

  • 要使用 Azure Web 作业,您需要创建一个控制台应用程序并将其部署到 Azure Web 作业。

enter image description here

甚至 MSDoc 也说使用 Azure Functions。

HTTP、Webhooks 和事件网格绑定仅受 Azure Functions 支持,WebJobs SDK 不支持。

感谢@Muhammed Saleem的解释。

Microsoft 在 WebJobs SDK 之上构建了 Azure Functions,因此它们共享大多数编程模型,例如事件、触发器以及与其他 Azure 服务的连接。

  • 将 HTTP 触发器函数部署并发布到 Azure Functions 并运行函数 URL。

enter image description here

  • 使用
    default (Function key)
    触发功能。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.