所以我想创建一个基于 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"
但没有得到任何结果
通过您的代码,很明显您正在创建 Azure Functions Http 触发器。
甚至 MSDoc 也说使用 Azure Functions。
HTTP、Webhooks 和事件网格绑定仅受 Azure Functions 支持,WebJobs SDK 不支持。
感谢@Muhammed Saleem的解释。
Microsoft 在 WebJobs SDK 之上构建了 Azure Functions,因此它们共享大多数编程模型,例如事件、触发器以及与其他 Azure 服务的连接。
default (Function key)
触发功能。