Pri*_*hal 3 c# azure-sql-database azure-functions
我在 Azure Linux 环境中托管了 Azure Function V3。我正在尝试从配置部分读取连接字符串。但我不明白。我尝试将连接字符串放在两者上,Application Settings以及Connection Strings如下所示的部分。
我正在使用依赖注入,我的Startup课程如下所示。
using BHD.Data.Data;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
[assembly: FunctionsStartup(typeof(BHD.AzureFunctions.Startup))]
namespace BHD.AzureFunctions
{
class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
var sqlConnection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
builder.Services.AddDbContext<ApplicationDbContext>(
options => options.UseSqlServer(sqlConnection));
}
}
}
Run Code Online (Sandbox Code Playgroud)
即使文件中存在连接字符串,我也能NullPointerException继续,如下所示。ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionStringlocal.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true"
},
"ConnectionStrings": {
"DefaultConnection": "<My connection string>"
}
}
Run Code Online (Sandbox Code Playgroud)
在 Azure Functions 2+ 中获取配置的方法是IConfiguration,而不是ConfigurationManager。
您可以注入IConfiguration到可能注入其他任何东西的大多数地方,但是在Startup()您需要使用类似此技巧的地方。
IConfiguration将在 Azure 中托管时自动从您的函数应用设置中读取,在local.settings.json本地运行时自动读取。
编辑(参考):
恕我直言,这方面的文档既不清楚也不容易找到。GitHub上也有很多相关的讨论和困惑。
主要来源是Azure Functions 2 中的 DI。在其中,您需要知道的大部分内容几乎很容易被遗漏:
功能主机注册了许多服务。以下服务可以安全地作为应用程序的依赖项:
[...]
Microsoft.Extensions.Configuration.IConfiguration[...]
它还在使用选项和设置中说:
应用设置中定义的值在 IConfiguration 实例中可用
主人为你做这件事;您不需要做任何事情,如上所述,它会根据您的托管上下文自动从正确的来源获取设置。
| 归档时间: |
|
| 查看次数: |
2596 次 |
| 最近记录: |