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

将Azure Functions从.NET 5迁移到.NET 6时如何注册HttpTrigger中间件

Azure Functions .NET 5迁移至.NET 6 无program.cs时注册中间件解决方案

以下方案仅适用于Azure Functions 隔离工作者模型(Isolated Worker Model),进程内模型不支持IFunctionsWorkerMiddleware接口

第一步:确认项目基础配置

首先检查项目根目录下的.csproj文件,确保包含以下配置:

  • 目标框架设置为net6.0
  • AzureFunctionsVersion值为v4
  • 新增OutputType节点值为Exe

配置片段参考:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
    <OutputType>Exe</OutputType>
    <_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
  </PropertyGroup>
  <!-- 其余原有包引用、配置保持不变 -->
</Project>

第二步:选择注册方式

方式1:新增Program.cs注册(推荐)

在项目根目录手动创建Program.cs文件,使用.NET 6顶级语句语法完成主机配置和中间件注册,示例代码如下:

using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults(builder =>
    {
        // 按执行顺序注册自定义中间件
        builder.UseMiddleware<YourCustomMiddleware>();
    })
    .ConfigureServices(services =>
    {
        // 其余业务服务注册逻辑
    })
    .Build();

host.Run();

方式2:沿用原有FunctionsStartup注册

如果项目保留了.NET 5版本的FunctionsStartup继承类,不需要新增Program.cs,直接在Startup类中通过配置选项注册中间件即可:

using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Configuration;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(YourNamespace.YourStartup))]
namespace YourNamespace
{
    public class YourStartup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.Configure<FunctionsWorkerOptions>(options =>
            {
                // 按执行顺序添加自定义中间件
                options.Middleware.Add(new YourCustomMiddleware());
            });
            // 其余业务服务注册逻辑
        }
    }
}

注意事项

  • 自定义中间件必须实现IFunctionsWorkerMiddleware接口,带参构造函数的参数需要提前注册到依赖注入容器
  • 中间件执行顺序和注册顺序完全一致,需要按业务需求调整注册顺序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:54:03