У меня проблема с несколькими azure функциями, развернутыми в одной службе приложения, и я получаю ошибки внедрения зависимостей.
- Azure Время выполнения функции V2
- Не выдает ошибку, если включена только одна функция
- Перезапуск приложения не помогает, но если я повторно разверну те же двоичные файлы, ошибка будет go исчезнуть для первого запуска, а затем вернется для последующих запусков
- Другие функции будут отображать ту же ошибку, но для разных служб
- Я попытался выполнить удаленную отладку, но не смог заставить ее поразить какие-либо точки останова или вызвать представление исключения
- Работает нормально локально
Это исключение из представления портала функций Azure:
2020-02-19T06:34:33.432 [Error] Executed 'Logger' (Failed, Id=edfbcc63-09b6-4f9e-8ee3-81fe50fd9412)
System.InvalidOperationException : Unable to resolve service for type 'Cloud.Services.Storage.Azure.IAzureTableStorageService' while attempting to activate 'Cloud.Web.AzureFunctions.Functions.Logger.Logger'.
at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp,Type type,Type requiredBy,Boolean isDefaultParameterRequired)
at lambda_method(Closure ,IServiceProvider ,Object[] )
at Microsoft.Azure.WebJobs.Host.Executors.DefaultJobActivator.CreateInstance[T](IServiceProvider serviceProvider) at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\DefaultJobActivator.cs : 37
at Microsoft.Azure.WebJobs.Host.Executors.DefaultJobActivator.CreateInstance[T](IFunctionInstanceEx functionInstance) at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\DefaultJobActivator.cs : 32
at Microsoft.Azure.WebJobs.Host.Executors.ActivatorInstanceFactory`1.<>c__DisplayClass1_1.<.ctor>b__0(IFunctionInstanceEx i) at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\ActivatorInstanceFactory.cs : 20
at Microsoft.Azure.WebJobs.Host.Executors.ActivatorInstanceFactory`1.Create(IFunctionInstanceEx functionInstance) at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\ActivatorInstanceFactory.cs : 26
at Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker`2.CreateInstance(IFunctionInstanceEx functionInstance) at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionInvoker.cs : 44
at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ParameterHelper.Initialize() at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs : 846
at async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.TryExecuteAsyncCore(IFunctionInstanceEx functionInstance,CancellationToken cancellationToken) at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs : 116
Код:
Определение функции:
[assembly: WebJobsStartup(typeof(FunctionStartUp))]
namespace Cloud.Web.AzureFunctions.Functions.Logger
{
public class Logger
{
private readonly IAzureTableStorageService _azureTableStorageService;
public Logger(IAzureTableStorageService azureTableStorageService)
{
_azureTableStorageService = azureTableStorageService;
}
[FunctionName("Logger")]
public async Task Run(
[ServiceBusTrigger("logger", Connection = @"ServiceBusConnectionString")]
EntityLogEntry myQueueItem,
ILogger log,
ExecutionContext context)
{...}
Запуск:
public class FunctionStartUp : IWebJobsStartup
{
public static ServiceProvider Container { get; private set; }
public void Configure(IWebJobsBuilder builder)
{
Container = CoreAppModule.ConfigureServices(builder.Services).BuildServiceProvider();
}
}
public class CoreAppModule
{
public static IServiceCollection ConfigureServices(IServiceCollection services)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("local.settings.json", true) //when deployed, all application settings must be stored in azure app configuration
.AddEnvironmentVariables()
.Build();
services.SetupConnectionStrings(config);
services.AddOptions();
services.SetupAutoMapper();
services.SetupMongoRepositories(config);
services.SetupDbContextsEFCore();
services.SetupDataServices(config);
services.SetupServices(config);
services.SetupInMemoryCache();
services.SetupIntegrationServices(config);
services.SetupStorageServices(config);
services.SetupCrypto(config);
services.SetupIntegrationLibraryServices(config);
services.SetupFtpConnectionDetails(config);
services.SetupServiceBus(config);
services.SetupStartupInitialization(config);
return services;
}
}
Зависимости:
Настройки портала: