Azure Function无法读取应用程序设置和连接字符串

avs*_*sln 3 c# azure azure-functions

我在Azure中创建了HTTP触发器函数,希望从Azure SQL数据库中读取数据。我在功能应用程序的“连接字符串”部分中配置了连接字符串,如下图所示

连接字符串错误

我使用下面的代码尝试读取连接字符串。

var cnnString = ConfigurationManager.ConnectionStrings["TempleDataContext"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)

执行时,我在日志中看到以下错误。

2018-10-24T18:13:56.385 [信息]函数'donors1'的脚本已更改。正在重新加载。2018-10-24T18:13:56.601 [信息]编译成功。2018-10-24T18:13:58.511 [信息]执行'Functions.donors1'(原因='此函数通过主机API以编程方式调用。',ID = 8b140087-4b50-450e-829c-f7abd9e3a1eb)2018-10-10 24T18:13:59.067 [信息] C#HTTP触发函数处理了一个请求。2018-10-24T18:13:59.245 [错误]执行了'Functions.donors1'(失败,ID = 8b140087-4b50-450e-829c-f7abd9e3a1eb)对象引用未设置为对象的实例。

我想测试所有返回到ConnectionStrings对象的内容,并将代码更改为

var cnnStrings = ConfigurationManager.ConnectionStrings;
    foreach(var c in cnnStrings)
    {
        log.LogInformation(c.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

当我检查日志时,这是我看到的信息。

2018-10-24T18:16:53.755 [信息]函数'donors1'的脚本已更改。正在重新加载。2018-10-24T18:16:54.540 [信息]编译成功。2018-10-24T18:16:55.917 [信息]执行'Functions.donors1'(原因='此函数通过主机API以编程方式调用。',ID = 508c49bf-d5e6-4a99-b1db-e1a79545fa91)2018-10-10 24T18:16:56.063 [信息] C#HTTP触发函数处理了一个请求。2018-10-24T18:16:56.070 [Information]数据源=。\ SQLEXPRESS;集成安全性= SSPI; AttachDBFilename = | DataDirectory | aspnetdb.mdf;用户实例= true 2018-10-24T18:16:56.079 [Information]已执行'Functions.donors1'(成功,ID = 508c49bf-d5e6-4a99-b1db-e1a79545fa91)

我对它在哪里获取ConnectionString信息感到困惑。

为了测试,我还添加了几行来阅读应用程序设置

var appSettings = ConfigurationManager.AppSettings;
foreach(var a in appSettings)
{
    log.LogInformation(a.ToString());
}
Run Code Online (Sandbox Code Playgroud)

它没有显示这些行的任何信息。

我正在使用C#脚本直接在门户中编写Azure函数。我想念什么吗?任何帮助将不胜感激。

Iva*_*ang 5

在功能v2中,应该使用Environment.GetEnvironmentVariable("string_name",EnvironmentVariableTarget.Process)来从应用程序设置和连接字符串中获取值。

注意连接字符串:

使用上述方法时,第一个参数取决于类型。这意味着,当连接字符串的类型SQLAZURE为时,第一个参数应为SQLAZURE +“ CONNSTR” +“ _stringName”。屏幕截图如下: 在此处输入图片说明

代码示例如下:

    //for connection string
    string connStr = Environment.GetEnvironmentVariable("SQLAZURECONNSTR_sqldb_connection",EnvironmentVariableTarget.Process);
    log.LogInformation("the connection string is: " + connStr);

    //for app settings
    string appStr = Environment.GetEnvironmentVariable("AzureWebJobsStorage",EnvironmentVariableTarget.Process);
    log.LogInformation("the string in app settings is: " + appStr);
Run Code Online (Sandbox Code Playgroud)

测试结果如下: 在此处输入图片说明