如何使用.NET Standard访问Azure Function App连接字符串
在.NET Standard 2.0的Azure Function脚本中获取连接字符串的正确方式
嗨,这个问题我之前做Azure Functions开发时也碰到过,在.csx脚本环境里直接用ConfigurationManager确实容易踩坑,给你几个靠谱的解决方法:
方法一:使用Environment.GetEnvironmentVariable(最简单直接)
Azure Function会自动把你在门户里配置的连接字符串转换成环境变量,命名规则是CONNECTIONSTRINGS_<连接字符串名称>(注意名称要改成大写,空格换成下划线)。比如你的连接字符串叫my string,对应的环境变量就是CONNECTIONSTRINGS_MY_STRING。
代码示例:
using System; public static void Run(/* 你的函数参数,比如 HttpRequest req, ILogger log */) { var connectionString = Environment.GetEnvironmentVariable("CONNECTIONSTRINGS_MY_STRING"); // 接下来就可以使用connectionString了 }
方法二:注入IConfiguration(推荐,符合Azure Functions设计规范)
在Azure Functions中,更推荐用依赖注入的方式获取配置,你可以直接在函数的参数列表里添加IConfiguration,然后通过它来获取连接字符串,不需要额外引用其他包。
代码示例:
using Microsoft.Extensions.Configuration; public static async Task<IActionResult> Run( HttpRequest req, IConfiguration config, ILogger log) { var connectionString = config.GetConnectionString("my string"); // 使用连接字符串进行后续操作 return new OkObjectResult($"连接字符串已获取:{connectionString}"); }
这种方式和.NET Core/.NET 5+的配置体系一致,不管是本地调试还是部署到Azure都能无缝适配。
方法三:如果一定要用ConfigurationManager(不推荐,但可以实现)
如果你坚持要用ConfigurationManager,需要在.csx脚本的顶部添加正确的程序集引用和NuGet包引用:
#r "System.Configuration" #r "nuget: System.Configuration.ConfigurationManager, 4.7.0" using System.Configuration; public static void Run(/* 函数参数 */) { var connectionString = ConfigurationManager.ConnectionStrings["my string"].ConnectionString; }
不过这种方式在Azure Functions脚本环境里容易出现版本兼容问题,所以还是更推荐前两种方法。
内容的提问来源于stack exchange,提问作者Aidan
相关产品推荐
相关产品推荐

