Azure Functions Database Connection String

前端 未结 14 682
谎友^
谎友^ 2020-12-05 17:08

How do I add or access an app.config file in Azure functions to add a database connection string?

If you\'re not supposed to add an app.config

相关标签:
14条回答
  • 2020-12-05 17:36

    If you are using function runtime v3, then following approach will work for you.

    {
      "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true;",
        "AzureWebJobsDashboard": ""
      },
      "ConnectionStrings": {
        "MyConnectionString": "[YourConnectionStringHere]"
      }
    }
    

    In your function's startup file

    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        var config = builder.ConfigurationBuilder.Build();
        var connectionString = config.GetConnectionString("MyConnectionString");
    }
    
    0 讨论(0)
  • 2020-12-05 17:37

    Configuration Manager will be replaced by the new Asp.Net Core Configuration System in Functions Runtime v2.

    So if you are using .Net Core you should follow John Gallants Blog article: https://blog.jongallant.com/2018/01/azure-function-config/

    • Works with local.settings.json and Settings in Azure Function
    • Works with App Settings and Connection Strings
    0 讨论(0)
  • 2020-12-05 17:40

    some of the above suggestions work. However there is a more straight forward way of setting a connection string. It is by using the 'publish' screen one sees after hitting the publish setting. see picture from documentation here

    0 讨论(0)
  • 2020-12-05 17:40

    The Best way to handle connection strings is by using "Azure Key Vault". You can store all the important secrets in Key Vault and consume in the Application. As suggested by other members you can use Application Settings.

    help full links: https://docs.microsoft.com/en-us/azure-stack/user/azure-stack-key-vault-manage-portal?view=azs-2002

    https://docs.microsoft.com/en-us/aspnet/core/security/key-vault-configuration?view=aspnetcore-3.1

    0 讨论(0)
  • 2020-12-05 17:41

    I have tried below code snippet on my local database that seems easy. Let's have a look.

    Nuget Extention:

    Download following reference from Nuget Package Manager On your project Dependencies part

    using System.Data.SqlClient;
    

    local.settings.json:

    {
      "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet",
        "sqldb_connection": "Data Source=.;Initial Catalog=DatabaseName;Connection Timeout=30;Integrated Security=True;"
      }
    }
    

    Read Connection On Function Body:

    //Read database Connection

            var sqlConnection = Environment.GetEnvironmentVariable("sqldb_connection");
    

    Function Read Write Operation Using Connection String:

    // Convert all request perameter into Json object
    
                    var content = req.Content;
                    string jsonContent = content.ReadAsStringAsync().Result;
                    dynamic requestPram = JsonConvert.DeserializeObject<AzureSqlTableClass>(jsonContent);
    
                    // Validate required param
    
                    if (string.IsNullOrEmpty(requestPram.FirstName))
                    {
                        return req.CreateResponse(HttpStatusCode.OK, "Please enter First Name!");
                    }
                    if (string.IsNullOrEmpty(requestPram.LastName))
                    {
                        return req.CreateResponse(HttpStatusCode.OK, "Please enter Last Name!");
                    }
    
    
    
                    //Read database Connection
    
                    var sqlConnection = Environment.GetEnvironmentVariable("sqldb_connection");
                    var responseResults = 0;
    
                    //Read Write Uisng Connection String
    
                    using (SqlConnection conn = new SqlConnection(sqlConnection))
                    {
                        conn.Open();
                        var text = "INSERT INTO AzureSqlTable VALUES ('" + requestPram.FirstName + "', '" + requestPram.LastName + "', '" + requestPram.Email + "') ";
    
                        using (SqlCommand cmd = new SqlCommand(text, conn))
                        {
                            responseResults = await cmd.ExecuteNonQueryAsync();
                        }
                        conn.Close();
                    }
    
                    return req.CreateResponse(HttpStatusCode.OK, responseResults);
    

    Note: While publish your function on azure portal just replace the connection string on local.settings.json file. It will work accordingly. See the screen shot below:

    0 讨论(0)
  • 2020-12-05 17:41

    Try this method.

    public static string GetConnectionString(string name)
    {
        string conStr = System.Environment.GetEnvironmentVariable($"ConnectionStrings:{name}", 
                        EnvironmentVariableTarget.Process);
    
        // Azure Functions App Service naming 
        if (string.IsNullOrEmpty(conStr))convention
            conStr = System.Environment.GetEnvironmentVariable($"SQLAZURECONNSTR_{name}", 
                     EnvironmentVariableTarget.Process);
    
        return conStr;
    }
    
    0 讨论(0)
提交回复
热议问题