One*_*eil 1 c# azure azureservicebus azure-functions
我目前使用ServiceBusTrigger绑定具有azure函数
[ServiceBusTrigger("%TopicName%", "%SubscripionName%", Connection = "MyConnection")]
string catclogueEventMsgs, ILogger log, ExecutionContext context)
Run Code Online (Sandbox Code Playgroud)
使用此local.settings.json文件
"Values": {
…
"MyConnection": "Endpoint=sb://testxxxxxxxxxxxxxxxxxx
"SubscriptionName": "testsubscriptionName"
"TopicName": "testtopicName",
}
Run Code Online (Sandbox Code Playgroud)
我如何在appsettings.json文件中表示这一点。会像下面吗?
"Values": {
"MyConnection": "Endpoint=sb://testxxxxxxxxxxxxxxxxxx
"SubscriptionName": "testsubscriptionName"
"TopicName": "testtopicName",
}
Run Code Online (Sandbox Code Playgroud)
我可以使用“ MySubs”对象代替如下的“ Values”对象吗?
"MySubs": {
"MyConnection": "Endpoint=sb://testxxxxxxxxxxxxxxxxxx
"SubscriptionName": "testsubscriptionName"
"TopicName": "testtopicName",
}
Run Code Online (Sandbox Code Playgroud)
如果可以使用上面的设置,如何在ServiceBusTrigger绑定中表示呢?我会改成这个吗?
[ServiceBusTrigger("%MySubs.TopicName%", "%MySubs.SubscripionName%", Connection = "MySubs.MyConnection")]
string catclogueEventMsgs, ILogger log, ExecutionContext context)
Run Code Online (Sandbox Code Playgroud)
您确实可以Values按如下方式读取阵列之外的设置:
public class WeatherApiConfig
{
public string WeatherApiUrl { get; set; }
public string WeatherApiKey { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Azure Functions V2的新增功能,我们有一种适当的方式来处理DI,如下所示:
[assembly: FunctionsStartup(typeof(BlazingDemo.Api.Startup))]
namespace BlazingDemo.Api
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
var apiConfig = new WeatherApiConfig();
config.GetSection("WeatherApiConfig").Bind(apiConfig);
builder.Services.AddSingleton(apiConfig);
builder.Services.AddHttpClient();
}
}
}
Run Code Online (Sandbox Code Playgroud)
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
},
"WeatherApiConfig": {
"WeatherApiUrl": "http://api.openweathermap.org/data/2.5/weather",
"WeatherApiKey": "**removed**"
}
}
Run Code Online (Sandbox Code Playgroud)
注意:对我来说,关键是添加文件
.SetBasePath(Directory.GetCurrentDirectory()),Startup.cs因为没有它就找不到文件。
在生产中,我使用功能应用程序的Application Settings部分来配置这两个属性,如下所示:
| 归档时间: |
|
| 查看次数: |
4208 次 |
| 最近记录: |