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

.NET 6独立函数如何修改OpenAPI默认URL路径

修改.NET 6独立函数中OpenAPI/Swagger的路由前缀

在.NET 6独立函数模式下,无法直接操作ASP.NET Core的app对象配置Swagger路由,你可以通过注册自定义IOpenApiRoutePrefixProvider服务的方式,修改OpenAPI相关接口的路由前缀,实现将Swagger路径挂载到函数路由下的需求。

步骤1:实现自定义路由前缀提供类

创建一个实现IOpenApiRoutePrefixProvider接口的类,返回目标路由前缀(比如api/FunctionName):

using Microsoft.Azure.Functions.Worker.Extensions.OpenApi.Core.Abstractions;

public class CustomOpenApiRoutePrefixProvider : IOpenApiRoutePrefixProvider
{
    public string RoutePrefix => "api/FunctionName";
}

步骤2:在Program.cs中注册服务

修改原有配置,添加自定义服务注册,替换默认的IOpenApiRoutePrefixProvider实现:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults(worker => worker.UseNewtonsoftJson())
    .ConfigureServices(services =>
    {
        // 注册自定义路由前缀提供器
        services.AddSingleton<IOpenApiRoutePrefixProvider, CustomOpenApiRoutePrefixProvider>();

        services.AddSingleton<IOpenApiConfigurationOptions>(_ =>
        {
            var options = new OpenApiConfigurationOptions()
            {
                Info = new OpenApiInfo()
                {
                    Version = "1.0.0",
                    Title = "Function Name",
                    Description = "This is the name of the function",
                    Contact = new OpenApiContact()
                    {
                        Name = "Codebug"
                    }
                },
                Servers = DefaultOpenApiConfigurationOptions.GetHostNames(),
                OpenApiVersion = OpenApiVersionType.V2,
                IncludeRequestingHostName = true,
                ForceHttps = false,
                ForceHttp = false,
            };

            return options;
        });
    })
    .Build();

host.Run();

验证效果

启动函数后,控制台输出的OpenAPI相关URL会更新为:

RenderOAuth2Redirect: [GET] http://localhost:7295/api/FunctionName/oauth2-redirect.html

RenderOpenApiDocument: [GET] http://localhost:7295/api/FunctionName/openapi/{version}.{extension}

RenderSwaggerDocument: [GET] http://localhost:7295/api/FunctionName/swagger.{extension}

RenderSwaggerUI: [GET] http://localhost:7295/api/FunctionName/swagger/ui

至此,Swagger相关路径已成功挂载到函数路由/api/FunctionName下。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:03:21