我可以在Azure函数连接字符串部分中同时使用测试和生产连接字符串吗?

时间:2019-02-13 21:33:31

标签: asp.net-mvc azure azure-functions

我在下面有这个Azure函数,它具有一些静态变量,这些变量是从Azure函数设置中的“连接字符串”部分提取的。 从下面的代码中,您可以看到我为每个键和/或数据库仅提取了一个连接字符串。每个都与我的Azure函数设置区域中的一个值相关,如下图所示。

但是现在我希望能够指定测试字符串和生产字符串! 如何在不进入Azure设置和手动更改隐藏字符串值的情况下执行此操作?我应该使用#if DEBUG

这样的预处理程序语句吗
SELECT
  COUNT(thing) AS value,
  CASE 
    WHEN (COALESCE(step1,0)+COALESCE(step2,0)+COALESCE(step3,0)+COALESCE(step4,0)+COALESCE(step5,0)+COALESCE(step6,0)+COALESCE(step7,0)) BETWEEN 0 AND 0.1 THEN '0-0.1'
    WHEN (COALESCE(step1,0)+COALESCE(step2,0)+COALESCE(step3,0)+COALESCE(step4,0)+COALESCE(step5,0)+COALESCE(step6,0)+COALESCE(step7,0)) BETWEEN 0.1 AND 0.2 THEN '0.1-0.2'
    WHEN (COALESCE(step1,0)+COALESCE(step2,0)+COALESCE(step3,0)+COALESCE(step4,0)+COALESCE(step5,0)+COALESCE(step6,0)+COALESCE(step7,0)) BETWEEN 0.2 AND 0.3 THEN '0.2-0.3'
    WHEN (COALESCE(step1,0)+COALESCE(step2,0)+COALESCE(step3,0)+COALESCE(step4,0)+COALESCE(step5,0)+COALESCE(step6,0)+COALESCE(step7,0)) BETWEEN 0.3 AND 0.4 THEN '0.3-0.4'
    WHEN (COALESCE(step1,0)+COALESCE(step2,0)+COALESCE(step3,0)+COALESCE(step4,0)+COALESCE(step5,0)+COALESCE(step6,0)+COALESCE(step7,0)) BETWEEN 0.4 AND 0.5 THEN '0.4-0.5'
    -- ad infinitum
  END AS metric
FROM table
GROUP BY metric

enter image description here

1 个答案:

答案 0 :(得分:1)

首先,请注意提示

  

仅当您使用实体框架时,连接字符串才应与功能应用程序一起使用。对于其他情况,请使用“应用程序设置”。

即使您的代码也能正常工作,我的建议是在Application settings上方的Connection strings部分中添加密钥,并以ConfigurationManager.AppSettings["settingName"]进行读取。

关于您的问题,请考虑使用slots(功能的预览功能)。

  1. 创建一个测试插槽,默认情况下它会从生产插槽复制设置。根据需要修改设置。

    enter image description here

  2. 将设置固定为slot settings(测试插槽和生产插槽)。 enter image description here

  3. 在测试插槽中进行测试后,交换两个插槽以使用生产设置。 enter image description here

如果您不想使用广告位,请将测试和生产设置都使用不同的前缀(例如test_SendGridApiKeyprod_SendGridApiKey)添加到“应用程序设置”中。然后添加一个额外的prefix设置来确定要读取的键,我们当然需要手动修改prefix

例如,添加三个设置,两个键:test_SendGridApiKeyprod_SendGridApiKey,以及一个值为prefix的{​​{1}}。

然后在功能代码中,我们调用下面的代码以获取测试键

test

在“应用程序”设置中将var prefix = ConfigurationManager.AppSettings["prefix"]; var settingName = "SendGridApiKey"; var sendGridApiKey = ConfigurationManager.AppSettings[$"{prefix}_{settingName}"]`; 更改为prefix后,我们将获得生产密钥。