我在使用".NET8"中的Azure函数,通过遵循这篇文章here,我试图使用一个定制的启动程序.

以下是定制启动:

using System;
using System.IO;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System.Xml.Linq;

[assembly: FunctionsStartup(typeof(Startup))]

namespace Function;

public class Startup : FunctionsStartup
{
    private IConfiguration Configuration { get; set; }

    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddHttpClient();
    }

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

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

但当我运行该函数时,我收到以下错误:

Error building configuration in an external startup class.
Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
A host error has occurred during startup operation '2fff8edb-0e76-4789-b51b-bdcbea0ad107'.
Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
Value cannot be null. (Parameter 'provider')
Press any key to continue....[2023-12-20T21:35:26.832Z] Error building configuration in an external startup class.
Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
A host error has occurred during startup operation 'e8145c61-4903-402b-b164-3f9c3866817e'.
Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
Error building configuration in an external startup class.
Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
A host error has occurred during startup operation '7b68f1b4-7d74-4221-afe2-13ec1ab77ef7'.
Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
Error building configuration in an external startup class.
Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
A host error has occurred during startup operation '9c04f584-294b-4f01-9c70-ba1df345ce13'.
Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
Error building configuration in an external startup class.
Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
A host error has occurred during startup operation '2f294885-00a4-46a1-b4f8-5cb7c55ac9b0'.
Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
Error building configuration in an external startup class.
Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
A host error has occurred during startup operation '0b2168d4-efdc-4cdc-8100-2575c5b0a77a'.
Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
Error building configuration in an external startup class.
Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
A host error has occurred during startup operation 'd2ba0a10-bbe7-4dea-a11d-ca64de26ea84'.
Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.

以下是我的包参考:

<PackageReference Include="Microsoft.Azure.AppConfiguration.Functions.Worker" Version="7.0.0" />
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Abstractions" Version="1.3.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues" Version="5.2.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="5.2.2" />
<PackageReference Include="Microsoft.Extensions.Azure" Version="1.7.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Identity.Core" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.2.0" />

Host.json:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      },
      "enableLiveMetricsFilters": true
    }
  }
}

我在不同的链接中查看了类似的问题和问题,但找不到任何解决方案.

推荐答案

100

您正在使用的Startup class支持In-Process Functions.

enter image description here

MSDOC声明隔离函数包含Program.cs文件,该文件提供complete access to the Host instance用于设置任何代码配置和依赖关系.

一百零二

  • 创建了一个.NET 8独立函数:

My Program.cs:

using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureServices(services =>
    {
        services.AddApplicationInsightsTelemetryWorkerService();
        services.ConfigureFunctionsApplicationInsights();
    })
    .ConfigureAppConfiguration((hostingContext, configBuilder) =>
    {
        var env = hostingContext.HostingEnvironment;
        configBuilder
          .AddJsonFile($"appsettings.json", optional: true, reloadOnChange: true)
          .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)
          ;
    })
    .Build();

host.Run();

Function.cs:

public class Function1
{
    private readonly ILogger<Function1> _logger;

    public Function1(ILogger<Function1> logger)
    {
        _logger = logger;
    }

    [Function(nameof(Function1))]
    public void Run([QueueTrigger("myqueue-items", Connection = "demo")] QueueMessage message)
    {
        _logger.LogInformation($"C# Queue trigger function processed: {message.MessageText}");
    }

.csproj:

<ItemGroup>
  <PackageReference Include="Azure.Storage.Blobs" Version="12.13.1" />
  <PackageReference Include="Azure.Storage.Files.Shares" Version="12.1.0" />
  <PackageReference Include="Azure.Storage.Queues" Version="12.13.1" />
  <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.20.0" />
  <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues" Version="5.2.0" />
  <PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.16.2" />
  <PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.21.0" />
  <PackageReference Include="Microsoft.Azure.Functions.Worker.ApplicationInsights" Version="1.0.0" />
  <PackageReference Include="Microsoft.Extensions.Azure" Version="1.5.0" />
</ItemGroup>

Console Response:

Azure Functions Core Tools
Core Tools Version:       4.0.5455 Commit hash: N/A  (64-bit)
Function Runtime Version: 4.27.5.21554

[2023-12-21T13:30:44.145Z] Found C:\Users\username\Source\Repos\FunctionApp20\FunctionApp20\FunctionApp20.csproj. Using for user secrets file configuration.
[2023-12-21T13:30:51.827Z] Azure Functions .NET Worker (PID: 31452) initialized in debug mode. Waiting for debugger to attach...
[2023-12-21T13:30:51.980Z] Worker process started and initialized.

Functions:

        Function1: queueTrigger

For detailed output, run func with --verbose flag.
[2023-12-21T13:31:37.924Z] Host lock lease acquired by instance ID '000000000000000000000000F72731CC'.
[2023-12-21T13:33:05.554Z] Executing 'Functions.Function1' (Reason='New queue message detected on 'myqueue-items'.', Id=5ebXXXXXXX5ade3)
[2023-12-21T13:33:05.560Z] Trigger Details: MessageId: b47f66XXXXXXXXXXXXXd2793e21d, DequeueCount: 1, InsertedOn: 2023-12-21T13:33:02.000+00:00
[2023-12-21T13:33:06.055Z] C# Queue trigger function processed: Hello world
[2023-12-21T13:33:06.155Z] Executed 'Functions.Function1' (Succeeded, Id=5eb356d2-e5dc-XXXXXXXXXXXXd67025ade3, Duration=703ms)

Csharp相关问答推荐

Blazor:用参数创建根路径

在Dapper中使用IasyncEum重写GetAsyncEum方法

如何阻止注释被包含在C#release build. exe中

在发布表单时绑定包含附加(嵌套)列表的对象列表的正确语法是什么

更新产品但丢失产品ASP.NET Core的形象

如何使用MoQ模拟Resources GroupCollection?

C# CompareTo()和Compare()可以返回除-1和1以外的整数吗?

确定System.Text.Json序列化中是否无法识别Type

从另一个不同 struct 的数组创建Newtonsoft.Json.Linq.J数组

正在try 从Blazor中的API读取JSON

EFR32BG22 BLE在SPP模式下与PC(Windows 10)不连接

如何管理Azure认证客户端响应和证书 fingerprint

C#动态设置ServerReport报表参数

为什么此名称不再被识别?名称不存在于当前上下文中?

如何在Polly重试策略成功之前将HttpClient请求排队?

在C#中通过Matheval使用自定义公式

使用本地公共PEM文件加密字符串,使用Azure KayVault中的私钥解密

如何将行添加到DataGrid以立即显示它?

如何对正方形格线进行对角分组

在Blazor中动态隐藏MUD文本