【问题标题】:How To Access Azure Function App ConnectionString Using dotnet Standard如何使用 dotnet Standard 访问 Azure Function App ConnectionString
【发布时间】:2018-06-11 09:33:26
【问题描述】:

我的 Azure Function App 定义了一个 ConnectionString。我想从用 dotnet 标准 2.0 编写的 C# 函数中检索它。我尝试将 System.Configuration.ConfigurationManager 添加到 project.json 并使用

var str = ConfigurationManager.ConnectionStrings["my string"].ConnectionString;

但我得到了错误

run.csx(24,15):错误 CS0103:当前上下文中不存在名称“ConfigurationManager”

如何访问连接字符串?

【问题讨论】:

    标签: .net-core connection-string azure-functions sqlconnection .net-standard


    【解决方案1】:

    ConfigurationManager 在 Azure Functions v2 .NET Standard 项目中不可用。 Azure FUnction v2 现在使用ASPNET Core Configuration

    您可以按照这些说明进行操作。

    1. 在你的运行方法中添加第三个参数。

      public static async Task<HttpResponseMessage> Run(InputMessage req, TraceWriter log, ExecutionContext context)
      
    2. 在run方法中,添加如下代码。

      var config = new ConfigurationBuilder()
          .SetBasePath(context.FunctionAppDirectory)
          .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
          .AddEnvironmentVariables()
          .Build();
      
    3. 然后您可以使用此变量访问应用设置。

    您可以查看this blog,了解如何在 v2 中使用 AppSettings 和 ConnectionStrings。

    【讨论】:

    • 非常感谢您让我注意到这一点,我已经放弃了,但是新的核心配置真的很整洁。
    【解决方案2】:

    run.csx(24,15):错误 CS0103:当前上下文中不存在名称“ConfigurationManager”

    根据提到的例外。看来您需要在dotnet标准2.0类库中添加参考System.Configuration。我在本地对其进行了测试,它在我这边可以正常工作。

    public class TestGetConnectionString
    {
    
        public string ConnectionString;
    
        public TestGetConnectionString()
        { 
    
            var str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            ConnectionString = str;
        }
    
    
    }
    

    更新:

    在您的情况下,您还可以在 Azure 函数应用设置中添加连接字符串。细节可以参考截图。我们可以通过以下代码轻松访问它。

     var connectionstring = Environment.GetEnvironmentVariable("ConnectionString");
    

    在 azure 门户上进行测试。

    【讨论】:

    • 感谢您的回复。您的函数在 .csx 文件中吗?对我来说,这就像一堂课。我的只是 .csx 文件中的静态方法。我引用了相同的 NuGet 包,并在脚本中使用了#r "System.Configuration.ConfigurationManager",但出现错误。
    • Is your function in a .csx file? 没有,我用的是precompiled azure function
    • 如何在Azure函数上引用程序集可以参考Azure Functions C# script developer reference
    • 在您的情况下,您还可以在 Azure 函数应用设置中添加连接字符串。并通过以下代码var connectionstring = Environment.GetEnvironmentVariable("ConnectionString");获取,详情请参考更新后的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2021-08-26
    • 2019-06-15
    • 2019-02-06
    • 2021-10-16
    • 2021-06-03
    相关资源
    最近更新 更多