Azure functions .net 5 UseSqlServer 配置

Azure functions .net 5 UseSqlServer configuration

我正在尝试使用 .net 5“dotnet-isolated”部署 azure 函数,但我无法在其上运行 sql 服务器。这是我的配置启动

         static async Task Main(string[] args)
            {
    #if DEBUG
                Debugger.Launch();
    #endif
                var host = new HostBuilder()
                    .ConfigureAppConfiguration(c =>
                    {
                        c.AddCommandLine(args);
                    })
                    .ConfigureFunctionsWorkerDefaults((c, b) =>
                    {
                        b.UseFunctionExecutionMiddleware();
                    })
                    .ConfigureServices((context, services) =>
                                            {
                                                services.AddDbContext<ApplicationDbContext>(options =>
                                                    options.UseSqlServer(context.Configuration.GetConnectionString("DefaultConnection")));
                                            })
                    .Build();
                
                await host.RunAsync();
            }

好像是

options.UseSqlServer(context.Configuration.GetConnectionString("DefaultConnection")))

无法识别 Azure 配置

看来 azure 未连接到您的构建,这可能是因为您对它的配置不稳定,也可能是因为 sql 数据过多,您希望它能够如此快速地处理。我猜是第二个。

问题出在ConfigureAppConfiguration。必须是:

.ConfigureAppConfiguration(c =>
                {
                    c.AddEnvironmentVariables();
                    c.AddCommandLine(args);
                })

所以,最后的 Main 是:

 static async Task Main(string[] args)
        {
#if DEBUG
            Debugger.Launch();
#endif
            var host = new HostBuilder()
                .ConfigureAppConfiguration(c =>
                {
                    c.AddEnvironmentVariables();
                    c.AddCommandLine(args);
                })
                .ConfigureFunctionsWorkerDefaults((c, b) =>
                {
                    b.UseFunctionExecutionMiddleware();
                })
                .ConfigureServices((context, services) =>
                                        {
                                            services.AddDbContext<ApplicationDbContext>(options =>
                                                options.UseSqlServer(context.Configuration.GetConnectionString("DefaultConnection")));
                                        })
                .Build();
            
            await host.RunAsync();
        }