首页 > 解决方案 > 在 Azure 订阅中部署 Azure 持久功能错误

问题描述

AZ 持久功能错误

我在我的 AZ Durable 中收到此错误。

操作系统:Linux。

csproj文件内容:

TargetFramework=>netcoreapp3.1

AzureFunctionsVersion=>v3

<PackageReference Include="AutoMapper" Version="9.0.0" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="7.0.0" />
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.1.5" 
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="3.1.5" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.3" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.2.2" />

Startup.cs 代码:(..)

public override void Configure(IFunctionsHostBuilder builder)
{
  var configuration = new ConfigurationBuilder()
    .SetBasePath(Environment.CurrentDirectory)
    .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)          
    .AddUserSecrets(Assembly.GetExecutingAssembly(), true)
    .AddEnvironmentVariables().Build();

  builder.Services.RegisterServices(configuration);     
  builder.Services.AddAutoMapper(typeof(Startup).GetTypeInfo().Assembly);
}

注册服务()...

public static void RegisterServices(this IServiceCollection services, Configuration configuration) {

        ConfigApi configApi = configuration.GetSection(ConfigApi.Section).Get<ConfigApi>();

        services.AddSingleton(typeof(ConfigApi), configApi);

        ApiManagerMap apiManager = configuration.GetSection(ApiManagerMap.Section).Get<ApiManagerMap>();
        var endpointList = apiManager.ApiList.ToList();

        services.AddSingleton(new AssetServiceConfig
        {
            AssetServiceEndpoint = endpointList.First(p => p.ApiName == "AssetService")
        });
        services.AddScoped<IAssetService, AssetService>();

        services.AddScoped<ICatalogMap>(x => new CatalogMap(
            x.GetRequiredService<IMapper>(), x.GetRequiredService<IAssetService>()));

        services.AddSingleton(new PimServiceConfig
        {
            PimServiceEndpoint = endpointList.First(p => p.ApiName == "PIMService")
        });
        services.AddScoped<IPimService, PimService>();

        services.AddSingleton(new CatalogServiceConfig
        {
            CatalogServiceEndpoint = endpointList.First(p => p.ApiName == "CatalogService")
        });

        services.AddScoped<ICatalogService, CatalogService>();

}

功能代码构造函数代码:(..)

private readonly ICatalogMap catalogMap;
private readonly IPimService pimService;
private readonly ICatalogService catalogService;
private readonly ConfigApi configApi;

public DownloadAndProcess(ICatalogMap catalogMap, IPimService pimService, ICatalogService catalogService, ConfigApi configApi)
{
  this.catalogMap = catalogMap;
  this.pimService = pimService;
  this.catalogService = catalogService;
  this.configApi = configApi;
}

当我将此部署到我的 AZ 订阅时,总是会收到提供的错误。

标签: c#azurefunctiondependency-injection

解决方案


您需要让 Azure Functions 核心工具运行 3.x。您可以通过在终端中运行 func 来检查。 在此处输入图像描述

如果您没有运行 3.x,请运行以下命令。检查核心工具版本并尝试重新部署它。

sudo apt-get install azure-functions-core-tools-3

参考:https ://github.com/Azure/azure-functions-core-tools


推荐阅读