Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用azure函数和web api的EF核心连接字符串设置_C#_Azure_Asp.net Core_Entity Framework Core_Azure Functions - Fatal编程技术网

C# 使用azure函数和web api的EF核心连接字符串设置

C# 使用azure函数和web api的EF核心连接字符串设置,c#,azure,asp.net-core,entity-framework-core,azure-functions,C#,Azure,Asp.net Core,Entity Framework Core,Azure Functions,我有两个项目 1.ASP.NET核心WEB API 2.Azure函数 两者都托管在azure上。 我在开发和生产方面也有不同的账户,因为我需要根据应用程序部署的环境拥有不同的连接字符串 对于EntityFramework,我使用2应用程序所引用的一个单独的项目 当从weba api使用单独的项目时,我可以通过这种方式读取连接字符串 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {

我有两个项目 1.ASP.NET核心WEB API 2.Azure函数

两者都托管在azure上。 我在开发和生产方面也有不同的账户,因为我需要根据应用程序部署的环境拥有不同的连接字符串

对于EntityFramework,我使用2应用程序所引用的一个单独的项目

当从weba api使用单独的项目时,我可以通过这种方式读取连接字符串

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    if (!optionsBuilder.IsConfigured)
    {
        var envName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
        IConfigurationRoot configuration = new ConfigurationBuilder()
                                            .SetBasePath(Path.Combine(Directory.GetCurrentDirectory()))

            .AddJsonFile("appsettings.json", optional: false)
            .AddJsonFile($"appsettings.{envName}.json", optional: false)
            .Build();

        var cs = configuration.GetConnectionString("DefaultConnection");
        optionsBuilder.UseSqlServer(cs);
    }
}

但是触发器没有appsettings.json文件。在这种情况下我能做什么?

对于本地开发,请使用环境变量存储连接字符串。 在VisualStudio中右键单击Azure函数项目,然后选择属性、调试,您将能够在其中添加环境变量。这将存储在launchsettings.json中 例如,您可以称之为MSSQL_CONN_STR

部署到Azure时,请使用应用程序设置 转到功能应用程序单击配置,您可以添加一个新的应用程序设置/环境变量,该变量的键与上面的MSSQL_CONN_STR相同,但带有连接字符串的生产值

在C代码中,可以获得与上面相同的环境变量

Environment.GetEnvironmentVariable("MSSQL_CONN_STR");
来自MS关于Azure Function应用程序的应用程序设置

应用程序设置作为环境变量公开,供应用程序在运行时访问


但是触发器没有appsettings.json文件?您希望在哪里部署appsetting.json?@TonyNgo在部署触发器的服务器上为什么不创建1?我个人在使用azure函数时创建了appsetting.jsonproject@TonyNgo我确实创建了,但它只在本地工作。当我通过Visual studio部署azure函数时,appsettings.json被省略