'值不能为空。(参数 'connectionString')' - Azure 函数 - 实体框架核心

杰森_霍夫

我正在与这个斗争......如果可以,请帮助

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

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 课程:

[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 中收到此错误

在此处输入图片说明

任何人都可以帮忙 - 这让我发疯。

约斯特K

您缺少构建配置的逻辑

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

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

但是您也可以将其添加到您的Configure函数中

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

System.ArgumentNullException:值不能为null。(参数'connectionString')asp.net Core Docker-compose

asp.net core 2.0-值不能为null。参数名称:connectionString

值不能为空。参数名称:starter中的connectionString appsettings.json

实体框架核心可为空的外键

实体框架核心-迁移-没有为此对象定义无参数构造函数

实体框架核心:无法添加迁移:无无参数构造函数

在实体框架核心构造函数中读取DbContextOptions值

实体框架核心中的SQL RIGHT函数等效项

connectionString不能为空值

净核心ILogger值不能为空

实体框架核心错误:没有为此对象定义无参数构造函数

Azure函数-ConnectionString属性尚未初始化

Azure函数:值不能为null。参数名称:来源

在实体框架上运行嵌套查询时,“值不能为空。参数名称:源”

尝试从azure函数中提取azure密钥库时出错-值不能为null。参数名称:authKeyOrResourceToken

如何在实体框架核心中调用标量函数

System.ArgumentNullException:'值不能为null。(参数'connectionString')'

.NET Core工作程序异常:值不能为null。参数名称connectionString

System.Private.Uri:Azure函数的值不能为空错误

CDbConnection.connectionString不能为空

复制Azure存储的.NET实体框架ConnectionString使用逻辑

Azure 上的实体框架核心:更新数据库参数 –ConnectionString 不起作用

获取连接字符串时出错:ArgumentNullException:值不能为空。参数名称:connectionString

Azure 函数失败,并显示值不能为空的无用错误消息。参数名称:值

错误:- 值不能为空参数名称:.Net Core 中的ConnectionString 用于两个数据库连接

值不能为空。(参数'principal')[身份][ASP.net核心]

EFCore“值不能为空。(参数'connectionString')”如果值在环境变量中

值不能为空。(参数“connectionString”)第一次运行迁移时

Azure 功能持久 - Microsoft.Azure.WebJobs.Extensions.DurableTask:值不能为空。(参数“主机配置”)