'值不能为空。 (参数 'connectionString')' - Azure 函数 - Entity Framework 核心

'Value cannot be null. (Parameter 'connectionString')' - Azure Function - Entity Framework Core

我正在为此苦苦挣扎....如果可以请帮忙

这在我的启动文件中(依赖注入)

public override void Configure(IFunctionsHostBuilder builder)
    {
       

        builder.Services.AddDbContext<CatsDBContext>(
            options =>
            {
                const string Name = "SqlConnectionString";
                options.UseSqlServer(Configuration.GetConnectionString(Name));
            });

这是我的local.settings.json

{
    "IsEncrypted": false,   "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"   },
     "ConnectionStrings": {
    "SqlConnectionString": "Server=tcp:animal77.database.windows.net,1433;Initial Catalog=CatsDB;Persist Security Info=False;User ID=j;Password=A;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;"
       } }

这是我的背景

namespace Shizzle.Models
{
    public partial class CatsDBContext : DbContext
    {
        public CatsDBContext()
        {
        }

        public CatsDBContext(DbContextOptions<CatsDBContext> options)
            : base(options)
        {
            
        }

        public virtual DbSet<Cats> Cats { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
#warning 
          //  optionsBuilder.UseSqlServer("Server=tcp:animal77.database.windows.net,1433;Initial Catalog=CatsDB;Persist Security Info=False;User ID=j;Password='';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;");
            }

这是我希望它对数据库执行的函数

namespace Shizzle
{
    public  class Function1
    {
        private readonly CatsDBContext _applicationDbContext;

        public Function1(CatsDBContext applicationDbContext)
        {
            _applicationDbContext = applicationDbContext;
        }

        [FunctionName("Function1")]
        public async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            
            string name = req.Query["name"];

            var demo = new Cats { Name = "Jason", Id = 5 };
            _applicationDbContext.Cats.Add(demo);
            _applicationDbContext.SaveChanges();

这是我的启动 DI class :

[assembly: FunctionsStartup(typeof(Startup))]

namespace Shizzle
{
    class Startup : FunctionsStartup
     {

       public IConfiguration Configuration { get;  }

        public override void Configure(IFunctionsHostBuilder builder)
        {
           

            builder.Services.AddDbContext<CatsDBContext>(
                options =>
                {
                    const string Name = "SqlConnectionString";
                    options.UseSqlServer(Configuration.GetConnectionString(Name));
                });
            

        }

        }
   
}

我在 visual studio 2019

中收到此错误

谁能帮忙 - 这快把我逼疯了。

您缺少构建配置的逻辑

我认为最好的方法是同时覆盖 ConfigureAppConfiguration

public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) 
{
  Configuration = builder.ConfigurationBuilder.Build();
}

但您也可以在 Configure 函数中添加此内容