Конвейер CI/CD запускает эту команду для сборки проекта с конфигурацией выпуска:
Код: Выделить всё
dotnet publish -c Release -r linux-x64 --self-contained false -o ./publish
Код: Выделить всё
Я поделился журналом CloudWatch ниже, когда лямбда пытается запустить выпускные сборки, имеющие проблемы, и не запускается ни для одного из вызовов лямбда:
/>
System.Reflection.TargetInvocationException: исключение создано целью вызова.
System.Reflection.ReflectionTypeLoadException: невозможно загрузить один или несколько запрошенных типов.
Не удалось загрузить файл или сборку «System.Data.SqlClient, Version=4.6.1.6, Culture=neutral, PublicKeyToken=b03xxxxx11xxxxxx'. Системе не удается найти указанный файл.
в System.Reflection.RuntimeModule.GetTypes(модуль RuntimeModule)
в MediatR.Registration.ServiceRegistrar.c.b__1_0(Assembly a)
в System.Linq.Enumerable.SelectManySingleSelectorIterator
Код: Выделить всё
2.MoveNext() at System.Linq.Enumerable.WhereEnumerableIteratorв System.Linq.Enumerable.WhereEnumerableIterator
Код: Выделить всё
1.MoveNext() at MediatR.Registration.ServiceRegistrar.ConnectImplementationsToTypesClosing(Type openRequestInterface, IServiceCollection services, IEnumerableat MediatR.Registration.ServiceRegistrar.AddMediatRClasses (службы IServiceCollection, IEnumerable
Код: Выделить всё
1 assembliesToScan, MediatRServiceConfiguration configuration) at MediatR.ServiceCollectionExtensions.AddMediatR(IServiceCollection services, IEnumerableКод: Выделить всё
1 configuration) at MediatR.ServiceCollectionExtensions.AddMediatR(IServiceCollection services, Assembly[] assemblies) at platform_jjz_service_api.Startup.ConfigureServices(IServiceCollection services) in /runner/_work/JJZClin/JJZClin/platform_jjz_service_api/Startup.cs:line 292 at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Spanat System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags ignoreAttr, Binderbinder, параметры Object[], CultureInfo Culture)
at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.InvokeCore(экземпляр объекта, службы IServiceCollection)
at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.UseStartup(Тип startType, контекст HostBuilderContext, службы IServiceCollection, экземпляр объекта)
at Microsoft.Extensions.Hosting.HostBuilder.InitializeServiceProvider()
в Microsoft.Extensions.Hosting.HostBuilder.Build()
в Amazon.Lambda.AspNetCoreServer.AbstractAspNetCoreFunction
Код: Выделить всё
2.Start() at Amazon.Lambda.AspNetCoreServer.AbstractAspNetCoreFunctionв Amazon.Lambda.AspNetCoreServer.AbstractAspNetCoreFunction`2..ctor()
в Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction..ctor()
at Platform_jjz_service_api.LambdaEntryPoint..ctor()
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean WrapExceptions)
Расследование, которое я провел:
- Выполнял действия github несколько раз в одной и той же ветке git без изменений кода, в некоторых сборках лямбда-выражение выполнялось успешно, тогда как в некоторых сборках ему не удавалось запустить образ.
- Загрузил артефакт, который собирает действия GitHub (который выдает ошибку при попытке лямбда-выражения запустить его), и запустил его локально с помощью dotnet Platform_jjz_service_api.dll, и на моем локальном компьютере возникла та же ошибка.
- Проверено наличие файла «System.Data.SqlClient.dll» в разархивированная папка артефакта
- Проверил версию сборки "System.Data.SqlClient.dll" с помощью [System.Reflection.AssemblyName]::GetAssemblyName("System.Data.SqlClient.dll").Version и вернул 4.6.1.6
Подробнее здесь: https://stackoverflow.com/questions/798 ... y-system-d