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
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
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.