You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地运行Azure WebJobs SDK时如何调用HTTP Trigger?

本地测试WebJobs SDK HTTP Trigger的方法

WebJobs SDK默认不会启动HTTP服务器,要支持HTTP Trigger,需要额外配置启动轻量HTTP服务,结合ASP.NET Core WebHost即可实现,具体步骤如下:

1. 添加必要NuGet包

安装以下依赖包,可通过NuGet包管理器或命令行操作:

dotnet add package Microsoft.Azure.WebJobs.Extensions.Http
dotnet add package Microsoft.AspNetCore
dotnet add package Microsoft.AspNetCore.Hosting

2. 修改Program.cs配置HTTP服务

将WebJobs宿主与ASP.NET Core WebHost结合,启动本地HTTP监听:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Microsoft.Azure.WebJobs;

var builder = Host.CreateDefaultBuilder(args)
    .ConfigureWebJobs(b =>
    {
        b.AddHttp(); // 启用HTTP Trigger扩展
        b.AddTimers(); // 保留原有TimerTrigger支持
    })
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseUrls("http://localhost:5000"); // 指定本地监听地址和端口
        webBuilder.UseStartup<Startup>();
    });

var host = builder.Build();
await host.RunAsync();

新增Startup.cs类,配置路由与请求处理:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRouting();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapWebJobs(); // 映射WebJobs的HTTP Trigger路由
        });
    }
}

3. 编写HTTP Trigger函数

创建示例HTTP触发函数:

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

public class HttpFunctions
{
    [FunctionName("MyHttpTrigger")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("HTTP Trigger function processed a request.");

        string name = req.Query["name"];

        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        dynamic data = JsonConvert.DeserializeObject(requestBody);
        name = name ?? data?.name;

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

4. 本地测试调用

启动项目后,HTTP服务会监听指定地址,HTTP Trigger的调用URL格式为:
http://localhost:5000/api/[FunctionName]

以示例函数为例,调用URL为:
http://localhost:5000/api/MyHttpTrigger

可通过以下方式测试:

  • GET请求:浏览器访问 http://localhost:5000/api/MyHttpTrigger?name=Test
  • POST请求:用Postman或curl发送JSON体 {"name":"Test"} 到上述URL

注意事项

  • AuthorizationLevel设为Anonymous可跳过身份验证,方便本地测试;若需权限控制,可改为其他级别并携带对应密钥。
  • 监听端口可按需修改,避免与本地其他服务冲突。

内容的提问来源于stack exchange,提问作者craigrs84

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 18:42:39