【问题标题】:Azure: Function host is not runningAzure:函数主机未运行
【发布时间】:2022-09-30 05:43:10
【问题描述】:

我有一个 azure 中的函数应用程序,当我点击函数应用程序的 URL 时,它显示“函数主机未运行。”我还在应用程序见解或 Azure 门户的函数应用程序服务中检查了日志,它会在函数应用中显示以下错误消息。

注意:我的管道的构建和发布成功了,所以我不确定在哪里检查以及解决方案是什么。我尝试了一个新的功能应用程序,但仍然没有运气。

我的 Startup.cs 文件以了解我如何引用配置值,

 public override void Configure(IFunctionsHostBuilder builder)
    {
        //var connectionString = Environment.GetEnvironmentVariable(\"ConnectionStrings:DBConnection\");

        var serviceProvider = builder.Services.BuildServiceProvider();
        _configuration = serviceProvider.GetRequiredService<IConfiguration>();
        var appSettingsSection = _configuration.GetSection(\"AppSettings\");
        builder.Services.Configure<AppSettings>(appSettingsSection);
        var appSettings = appSettingsSection.Get<AppSettings>();
        RuntimeConfig.appsettings = appSettings;

        var ConnectionString = RuntimeConfig.appsettings.AppDBConnection;
        ///builder.Services.AddDbContext<ShardingDbContext>(options => options.UseSqlServer(ConnectionString), ServiceLifetime.Transient);
        //builder.Services.AddScoped<ITestService, TestService>();


    }

    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        FunctionsHostBuilderContext context = builder.GetContext();

        builder.ConfigurationBuilder
            .AddJsonFile(Path.Combine(context.ApplicationRootPath, \"local.settings.json\"), optional: true, reloadOnChange: false)
            .AddJsonFile(Path.Combine(context.ApplicationRootPath, $\"{context.EnvironmentName}.settings.json\"), optional: true, reloadOnChange: false)
            .AddEnvironmentVariables();
    }

我将配置值作为 IConfiguration,它适用于我的本地但不知道如何在服务器中执行相同的操作。

  • 您使用名称为“EIA”的东西吗?
  • 您是否缺少一些应用程序设置?
  • @MarkusMeyer 是的,你怎么知道的?
  • @Thomas 我认为是的,但我不知道如何添加
  • @MdAslam 那在错误消息中。 \"EIA: 对象引用未设置为对象的实例\"。所以,这个 EAI 需要一些配置(代码或应用程序设置)。我猜这个配置是错误的或缺失的

标签: azure azure-functions azure-pipelines .net-6.0


【解决方案1】:

在部署你的功能应用它既不上传local.settings.json到 Azure 或不修改应用程序设置基于local.settings.json文件。

核心价值对相关EIA存在于local.settings.json 中,请在门户的 Azure Function App 配置 > 应用程序设置中添加相同的键值对。

为此,我们必须手动更新门户中的应用程序设置或者如果您正在使用视觉工作室,我们可以使用更新VS 发布面板.

使用门户添加应用程序设置

  • Azure 门户 -> 您的 Azure 功能 -> 配置面板 -> 应用程序设置/连接字符串(添加您的自定义配置)

使用 Visual Studio 发布面板添加应用程序设置

  • 在发布您的天蓝色功能时添加您的应用程序设置。

  • 在托管面板右上角单击 (...)。

  • 在管理 Azure 应用服务设置中添加应用设置。

  • 添加您的设置,如下所示

【讨论】:

  • 实际上我的 json 值非常简单,不包含任何键名 EIA,我喜欢 => "AppSettings": { "AppDBConnection": "xyz db connection string;", }
  • 我也尝试在配置中添加这些 json 配置值,但错误保持不变。
  • 如果您要添加数据库连接设置,请尝试在“应用程序设置”面板下添加连接字符串。喜欢this
  • 我已经用 statup.cs 文件代码编辑了我的问题,所以请检查并让我知道解决方案是什么,我理解你提到的问题,但即使在创建配置应用程序设置之后它也不起作用
  • 您可以使用Environment.GetEnvironmentVariable($"ConnectionStrings:{&lt;Your connection string name &gt;}")获取确切的连接字符串值。
【解决方案2】:

我必须安装 Azure Functions Core Tools。它包括同一运行时的一个版本,它支持可以在本地开发计算机上运行的 Azure Functions 运行时。它还提供创建函数、连接到 Azure 和部署函数项目的命令。

【讨论】:

    猜你喜欢
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 2021-12-05
    • 2018-08-16
    相关资源
    最近更新 更多