Можно ли использовать строки тестовых и производственных подключений в разделе Строки подключения функций Azure? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть эта функция Azure ниже, и у нее есть некоторые статические переменные, которые извлекаются из раздела строк соединения в моих настройках функции Azure.Из приведенного ниже кода видно, что я извлекаю только одну строку подключения для каждого ключа и / или базы данных.Каждый из них соответствует значению в области настроек моей функции Azure, как показано на рисунке ниже.

Но теперь я хочу иметь возможность назначить тестовую строку и рабочую строку!Как это сделать, не заходя в настройки Azure и не изменяя вручную скрытые строковые значения?Должен ли я использовать операторы препроцессора, такие как #if DEBUG

namespace Yogabandy2017.StripeWebhook
{
public static class StripeWebhook
{
    static string YbDatabaseConnectionString;
    static string SendGridApiKey;
    static string StripeSecret;
    static string StripeApiKey; 

    static StripeWebhook()
    {
        SqlProviderServices.SqlServerTypesAssemblyName = typeof(SqlGeography).Assembly.FullName;
        YbDatabaseConnectionString = ConfigurationManager.ConnectionStrings["YogaBandyDatabase"].ConnectionString;
        SendGridApiKey = ConfigurationManager.ConnectionStrings["SendGridApiKey"].ConnectionString;
        StripeSecret = ConfigurationManager.ConnectionStrings["StripeSecret"].ConnectionString;
        StripeApiKey = ConfigurationManager.ConnectionStrings["StripeApiKey"].ConnectionString;
    }

    [FunctionName("StripeWebhook")]
    public static async Task<object> Run([HttpTrigger(WebHookType = "genericJson")]HttpRequestMessage req, TraceWriter log)
    {
        return req.CreateResponse(HttpStatusCode.OK, new
        {
            greeting = $"Everythings ok!"
        });
    }
}
} 

enter image description here

1 Ответ

0 голосов
/ 14 февраля 2019

Прежде всего, обратите внимание на приглашение

Строки подключения следует использовать только с приложением-функцией, если вы используете Entity Framework.Для других сценариев используйте Настройки приложения.

Даже если ваш код работает так же, я предлагаю добавить ключи в Application settings разделе выше Connection strings, с ConfigurationManager.AppSettings["settingName"] для чтения.

Что касается вашего вопросарассмотрите возможность использования slots (функция предварительного просмотра для функции).

  1. Создайте тестовый слот, по умолчанию он копирует настройки из рабочего слота.Измените настройки по мере необходимости.

    enter image description here

  2. Исправьте настройки как настройки слота (как тестовый, так и рабочий слот).enter image description here

  3. После тестов в тестовом слоте поменяйте местами два слота, чтобы использовать производственные настройки.enter image description here

Если вы не хотите работать со слотами, добавьте тестовые и производственные настройки с другим префиксом (например, test_SendGridApiKey и * 1044).*) в настройках приложения.Затем добавьте дополнительную настройку prefix, чтобы определить, какие ключи читать, конечно, нам нужно изменить prefix вручную.

Например, добавить три настройки, две клавиши: test_SendGridApiKey и prod_SendGridApiKey,и один prefix со значением test.

Затем в функциональном коде мы вызываем код ниже, чтобы получить тестовые ключи

var prefix = ConfigurationManager.AppSettings["prefix"];
var settingName = "SendGridApiKey";
var sendGridApiKey = ConfigurationManager.AppSettings[$"{prefix}_{settingName}"]`;

Как только мы изменим prefix на prod вНастройки приложения, мы получаем производственные ключи.

...