Aws-lambda-dotnet: Exceção ao tentar usar Npgsql para se conectar a uma instância RDS

Criado em 13 dez. 2016  ·  6Comentários  ·  Fonte: aws/aws-lambda-dotnet

Estava usando Npgsql 3.1.9

START RequestId: 147aefc2-c10f-11e6-b24b-6daefcf72be1 Version: $LATEST Exception System.TypeInitializationException: The type initializer for 'Npgsql.TypeHandlerRegistry' threw an exception. ---> System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information. at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module) at System.Reflection.Assembly.GetTypes() at Npgsql.TypeHandlerRegistry..cctor() --- End of inner exception stack trace --- at Npgsql.TypeHandlerRegistry.Setup(NpgsqlConnector connector, NpgsqlTimeout timeout) at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout) at Npgsql.ConnectorPool.Allocate(NpgsqlConnection conn, NpgsqlTimeout timeout) at Npgsql.NpgsqlConnection.OpenInternal() at Seaside.Api.HelloWorld.Functions.<GetAsync>d__0.MoveNext() END RequestId: 147aefc2-c10f-11e6-b24b-6daefcf72be1 REPORT RequestId: 147aefc2-c10f-11e6-b24b-6daefcf72be1 Duration: 96.22 ms Billed Duration: 100 ms Memory Size: 256 MB Max Memory Used: 31 MB

guidance

Comentários muito úteis

Resolver dependências nativas é algo em que estamos trabalhando para melhorar. Como uma solução alternativa até então, você pode adicionar no arquivo aws-lambda-tools-defaults.json a propriedade "additional-files" que forçará a resolução nativa. Depois de fazer isso, consegui me conectar a um banco de dados postgresql.

  ...
  "function-handler": "NpgsqlTest::NpgsqlTest.Function::FunctionHandler",

  "additional-files": [
    "runtimes/linux/lib/netstandard1.3/System.Net.NetworkInformation.dll"
  ]
}

Todos 6 comentários

Resolver dependências nativas é algo em que estamos trabalhando para melhorar. Como uma solução alternativa até então, você pode adicionar no arquivo aws-lambda-tools-defaults.json a propriedade "additional-files" que forçará a resolução nativa. Depois de fazer isso, consegui me conectar a um banco de dados postgresql.

  ...
  "function-handler": "NpgsqlTest::NpgsqlTest.Function::FunctionHandler",

  "additional-files": [
    "runtimes/linux/lib/netstandard1.3/System.Net.NetworkInformation.dll"
  ]
}

Boa norma 👍

Estou tendo o mesmo problema, mas com núcleo .Net em um Mac. Existe um equivalente a "arquivos adicionais" quando não está usando o visual studio ou aws-lambda-tools?

Se você estiver usando o pacote NuGet Amazon.Lambda.Tools para implantar, quando você executar a função dotnet lambda deploy, ele lerá o arquivo aws-lambda-tools-defaults.json assim como o Visual Studio faz, incluindo a seção de arquivos adicionais .

Queríamos ter certeza de que todos os recursos de implantação no Visual Studio estavam disponíveis por meio da CLI dotnet para oferecer suporte a usuários em Macs.

Essa resposta me poupou muita dor adicional ... no entanto, é importante notar que se você não estiver usando VS para construir seu pacote / upload, mas em vez das ferramentas coreclr regulares (ou seja, "dotnet publish"), quaisquer configurações em aws-lambda-tools- defaults.json são ignorados, portanto, é necessário copiar manualmente este arquivo para a raiz do diretório do pacote.

Eu recomendo em vez de usar dotnet publish use dotnet lambda package . Isso fará o mesmo empacotamento que fazemos no Visual Studio, mas a partir da CLI do dotnet. Você pode ver a lista completa de comandos que adicionamos ao dotnet CLI por meio do pacote NuGet Amazon.Lambda.Tools executando dotnet lambda help

Esta página foi útil?
0 / 5 - 0 avaliações