Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure函数队列触发连接-我可以通过变量或特定的Azure应用程序配置设置此连接吗?_Azure_Azure Functions_Azure App Configuration - Fatal编程技术网

Azure函数队列触发连接-我可以通过变量或特定的Azure应用程序配置设置此连接吗?

Azure函数队列触发连接-我可以通过变量或特定的Azure应用程序配置设置此连接吗?,azure,azure-functions,azure-app-configuration,Azure,Azure Functions,Azure App Configuration,简单地说,我有以下几点: public async Task Run([QueueTrigger("order-new", Connection = "AzureWebJobsStorage")]string myQueueItem, ILogger log) 有没有什么方法可以让我这样做: public async Task Run([QueueTrigger("order-new", Connection = _connecti

简单地说,我有以下几点:

public async Task Run([QueueTrigger("order-new", Connection = "AzureWebJobsStorage")]string myQueueItem, ILogger log)
有没有什么方法可以让我这样做:

 public async Task Run([QueueTrigger("order-new", Connection = _connection)]string myQueueItem, ILogger log)
连接作为变量传入的位置?我可以访问构造函数中的值,它来自Azure应用程序配置服务。我只是尽量不必在多个地方更改设置。多谢各位

更新: 实际上,我已经找到了一种方法,可以将实际字符串而不是变量放入方法参数中,但是连接输入将其解释为它需要查找的变量,而不是连接本身的文本字符串

更新2: 我想我已经弄明白了,当我有机会@baum mit augen实际上删除了引导我到那里的帖子时,我会把它写下来

我可以从变量或特定的Azure应用程序中设置它吗 配置

不,它实际上从环境变量中获取值

但如果确实有必要,您可以将所需的配置导入到环境变量中

根据您的问题描述,您似乎是在Visual Studio上开发的,所以在本地开发时只需在local.settings.json中设置。并使用以下工具轻松上传设置:


确保将应用程序设置设置为Azure应用程序配置连接字符串,在本例中,我将其命名为APP\u CONFIG\u connection

要在Visual Studio中执行此操作,请在项目上单击鼠标右键,然后单击“属性”:

在Azure功能中,它将位于配置部分:

安装所需的软件包: 安装软件包Microsoft.Extensions.Configuration.AzureAppConfiguration-版本4.2.1

如果Startup.cs文件不存在,请添加该文件:

using System;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;

[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]
namespace MyNamespace
{
    class Startup : FunctionsStartup
    {
        public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
        {
            string cs = Environment.GetEnvironmentVariable("APP_CONFIG_CONNECTION");
            builder.ConfigurationBuilder.AddAzureAppConfiguration(cs);
        }

        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.AddAzureAppConfiguration();
        }
    }
}
现在,在函数中,可以通过路径引用配置变量

例子

[return: Queue(queueName: "%Some:Path:QueueName%", Connection = "Some:Path:ConnectionString")]

BOOM,在连接字符串之外的项目中没有设置。请注意,queueName变量被“%”包围,因为它是一个文本,而连接不是因为它是一个变量。您还可以通过依赖项注入访问其他变量:

    private readonly SomeApiClient _api;

    public My_QueueTrigger(IConfiguration configuration)
    {
        var config = configuration.Get<AppSettings>();
        _api = new SomeApiClient (new
        {
            ApiUrl = config.ApiUrl,
            AuthUrl = config.AuthUrl,
            ClientId = config.ClientId,
            ClientSecret = config.ClientSecret,
            Roles = new[] { ApiRole.FullAccess }
        });
    }

希望这对其他人有用。

我很难理解你的问题。通常,您注入IConfiguration,它会为您提供azure应用程序配置。但是你想通过变量来实现它吗?不一定,据我所知,我需要将它放入'Run'方法Connection=xxx的参数构造函数中,如果有其他方法来指定它,那也可以!我试图实现的全部目标是不在项目本身中设置任何本地设置。我希望所有设置都在Azure应用程序配置服务上。我想我可以在部署作业时编写替换脚本,但必须有更好的方法,对吗?这是不正确的信息,可能如我的解决方案所示
    private readonly SomeApiClient _api;

    public My_QueueTrigger(IConfiguration configuration)
    {
        var config = configuration.Get<AppSettings>();
        _api = new SomeApiClient (new
        {
            ApiUrl = config.ApiUrl,
            AuthUrl = config.AuthUrl,
            ClientId = config.ClientId,
            ClientSecret = config.ClientSecret,
            Roles = new[] { ApiRole.FullAccess }
        });
    }