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

问题描述 投票:0回答:3

我在 Visual Studio 中开发了一个 Azure 函数,并且在 Azure 中发布时它可以工作(从一年前开始)。

现在我在 Visual Studio 中从该 Azure 函数制作了一个模板,并更改了一些细节,但基本上是相同的。当我在本地测试时,效果很好。

但是当我在 Azure 中发布它并尝试测试它时,我收到此错误:

The ConnectionString property has not been initialized

我通常在应用程序设置中编写连接字符串(它适用于较旧的 Azure 功能)。

以下是该函数如何获取连接字符串的值:

var repo = new GranularRepository(ConfigurationManager.AppSettings["BoConnectionString"]);

我也尝试过:

var repo = new AvgDeliveryTime_GranularRepository(Environment.GetEnvironmentVariable("BodbConnectionString"));
azure connection-string azure-functions
3个回答
7
投票

根据你的描述,我无法区分你的函数运行时。

对于 v1:

您可以同时使用

ConfigurationManager.AppSettings
System.Environment.GetEnvironmentVariable
来获取 Azure 中的连接字符串。

var a = ConfigurationManager.AppSettings["BoConnectionString"];
var b = System.Environment.GetEnvironmentVariable("BoConnectionString");

对于 v2:

您可以使用

System.Environment.GetEnvironmentVariable
ConfigurationBuilder
来获取它。添加
ExecutionContext
参数,用于定位函数app目录

var a= System.Environment.GetEnvironmentVariable("BoConnectionString");
/////////////
public static void Run(...,ExecutionContext context)
{
    var config = new ConfigurationBuilder()
        .SetBasePath(context.FunctionAppDirectory)
        .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
        .AddEnvironmentVariables()
        .Build();

    // Get Connection strings
    var connParameter= "MySqlAzureConnection";
    string connectionString = config.GetConnectionString($"{connParameter}");
}

v1 和 v2 都在应用程序设置中设置连接字符串。

更多详情,可以参考这个issue


1
投票

我通过创建一个新的 Azure Function 项目修复了该问题。

所以我的结论是,在 Visual Studio 中从另一个 Azure Function 制作模板并将其用作新项目会产生问题。


0
投票

确保您的连接字符串前缀正确 -

  • SQL Server 连接字符串:以 SQLCONNSTR_ 为前缀
  • MySQL 连接字符串:以 MYSQLCONNSTR_ 为前缀
  • SQL 数据库 (Azure SQL) 连接字符串:以 SQLAZURECONNSTR_ 为前缀
  • 自定义字符串:以 CUSTOMCONNSTR_ 为前缀

例如:

Environment.GetEnvironmentVariable("SQLCONNSTR_MyConnectionString")

© www.soinside.com 2019 - 2024. All rights reserved.