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

如何用Azure Function触发本地.NET 6.0服务器的函数?

实现方案:Azure Function 触发本地.NET 6服务器函数

核心思路

Azure Function作为公网暴露的端点接收表单参数,通过Azure Relay Hybrid Connections(无需将本地服务器暴露到公网)转发请求到本地.NET 6 API,触发指定函数。

步骤1:确认本地.NET 6 API可用性

保持你的本地API代码不变,启动后监听本地端口(例如http://localhost:5000):

[ApiController]
[Route("[controller]")]
public class demowebpagexx : ControllerBase
{
    [HttpGet(Name = "demowebpagexx")]
    public void demowebpagexx(String param1)
    {
        Trace.Write($"Param1 is {param1}");
    }
}

测试本地API:访问http://localhost:5000/demowebpagexx?param1=Test,确认Trace能正常输出参数内容。

步骤2:创建Azure Relay Hybrid Connection

  1. 在Azure门户创建Relay命名空间,再在命名空间下创建Hybrid Connection(例如命名为LocalApiRelay)。
  2. 记录Hybrid Connection的连接字符串(包含EntityPath和SharedAccessKey)。

步骤3:部署HTTP触发的Azure Function

创建一个HTTP触发的Azure Function,负责接收公网请求并转发到本地API:

Function代码(C#)

using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;

public static class HttpExample
{
    private static readonly HttpClient _httpClient = new HttpClient();

    [FunctionName("HttpExample")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        // 获取请求参数param1
        string param1 = req.Query["param1"];

        if (string.IsNullOrEmpty(param1))
        {
            return new BadRequestObjectResult("请提供param1参数");
        }

        // 从应用设置读取Relay转发地址
        string relayUrl = Environment.GetEnvironmentVariable("RelayHybridConnectionUrl");
        string localApiTarget = $"{relayUrl}/demowebpagexx?param1={param1}";

        try
        {
            // 通过Relay转发请求到本地API
            await _httpClient.GetAsync(localApiTarget);
            return new OkObjectResult("参数已转发到本地服务器");
        }
        catch (Exception ex)
        {
            log.LogError(ex, "转发请求失败");
            return new StatusCodeResult(StatusCodes.Status500InternalServerError);
        }
    }
}

配置Function应用设置

在Azure Function的应用设置中添加两项:

  • RelayHybridConnectionUrl:值为Hybrid Connection的转发地址(格式:https://<你的Relay命名空间>.servicebus.windows.net/<Hybrid Connection名称>)
  • AzureWebJobsRelayConnectionString:值为你记录的Hybrid Connection连接字符串

步骤4:启动本地Relay监听程序

  1. 下载并安装Azure Relay Hybrid Connection Manager(HCM)。
  2. 打开HCM,添加你的Hybrid Connection,输入连接字符串,设置本地API的地址为http://localhost:5000。
  3. 启动HCM,它会自动建立Azure Relay与本地API的隧道。

步骤5:测试功能

访问Azure Function端点:https://demowebpagexx.azurewebsites.net/api/HttpExample?param1=HelloWorld,提交后本地.NET 6服务器的demowebpagexx函数会被触发,Trace中会输出Param1 is HelloWorld。

临时测试替代方案:使用ngrok

如果仅需临时验证功能,可绕过Azure Relay:

  1. 运行ngrok http 5000,得到临时公网地址(例如https://abc123.ngrok.io)。
  2. 修改Azure Function代码中的localApiTarget为https://abc123.ngrok.io/demowebpagexx?param1={param1},重新部署。
  3. 访问Function端点即可触发本地函数,但ngrok地址重启后会变化,仅适合临时场景。

内容的提问来源于stack exchange,提问作者Lukas Fürst

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:43:31