Azure 中的 ConnectionString 没有覆盖 Azure 函数的 LocalSqlServer
Posted
技术标签:
【中文标题】Azure 中的 ConnectionString 没有覆盖 Azure 函数的 LocalSqlServer【英文标题】:ConnectionString in Azure not overriding LocalSqlServer for Azure Function 【发布时间】:2018-09-05 01:17:16 【问题描述】:我在运行函数应用并记录可用连接字符串的数量时发现了问题。唯一可用的 ConnectionString 是 LocalSqlServer,它似乎是应用程序创建的默认连接字符串。
ConfigurationManager.ConnectionStrings["Name"].ConnectionString;抛出空参考。例外。
ConfigurationManager.ConnectionStrings[0].Name;给出“LocalSqlServer”
LocalSqlServer 连接字符串: 数据源=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;用户实例=true
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.10" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.1" />
<PackageReference Include="System.Linq" Version="4.3.0" />
</ItemGroup>
我的问题是如何覆盖或禁用默认数据库连接的 LocalSqlServer 并允许在运行应用程序时显示应用程序中已添加的当前 ConnectionString?
编辑: 我能够使用环境变量,但使用 Azure 中的 ConnectionStrings 仍然是一个问题。
【问题讨论】:
...在应用程序中添加到哪里,如何添加? 我指的是 Azure Functions 中的应用程序资源。 How To Access Azure Function App ConnectionString Using dotnet Standard的可能重复 为简单起见,您始终可以将其作为环境变量 - docs.microsoft.com/en-us/azure/app-service/… 【参考方案1】:我也遇到了同样的问题,但是因为这只是在开发中工作时出现的问题,所以我做了以下帮助方法
public static class AzureConfigHelper
public static string GetConnectionString(string key)
// try connection strings first
if (ConfigurationManager.ConnectionStrings[key] != null)
return ConfigurationManager.ConnectionStrings[key].ConnectionString;
else
// If can't locate config in connection strings try environment variables
return Environment.GetEnvironmentVariable(key);
`
我想得到一个合适的解决方案,但我有更紧迫的事情要做~有了这个我可以在 prod 中使用连接字符串,在 dev 中使用环境变量
【讨论】:
以上是关于Azure 中的 ConnectionString 没有覆盖 Azure 函数的 LocalSqlServer的主要内容,如果未能解决你的问题,请参考以下文章
同一存储的依赖注入多个接口(具有不同的connectionString)