Estaba 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
La resolución de dependencias nativas es algo en lo que estamos trabajando para mejorar. Como solución temporal hasta entonces, puede agregar en el archivo aws-lambda-tools-defaults.json la propiedad "additional-files" que forzará la resolución nativa. Una vez que hice esto, pude conectarme a una base de datos postgresql.
...
"function-handler": "NpgsqlTest::NpgsqlTest.Function::FunctionHandler",
"additional-files": [
"runtimes/linux/lib/netstandard1.3/System.Net.NetworkInformation.dll"
]
}
Buena norma 👍
Tengo el mismo problema, pero con .Net core en una Mac. ¿Existe un equivalente a "archivos adicionales" cuando no se usa visual studio o aws-lambda-tools?
Si está utilizando el paquete Amazon.Lambda.Tools NuGet para implementar, cuando ejecute dotnet lambda deploy-function , leerá el archivo aws-lambda-tools-defaults.json tal como lo hace Visual Studio, incluida la sección de archivos adicionales .
Queríamos asegurarnos de que todas las funciones de implementación en Visual Studio estuvieran disponibles a través de la CLI de dotnet para admitir a los usuarios en Mac.
Esta respuesta me ahorró mucho dolor adicional ... sin embargo, vale la pena señalar que si no está usando VS para construir su paquete / carga, sino las herramientas coreclr regulares (es decir, "dotnet publish"), cualquier configuración en aws-lambda-tools- defaults.json se ignoran, por lo que es necesario copiar manualmente este archivo a la raíz del directorio del paquete.
Recomiendo en lugar de usar dotnet publish
use dotnet lambda package
. Esto hará el mismo empaque que hacemos en Visual Studio pero desde la CLI de dotnet. Puede ver la lista completa de comandos que hemos agregado a la CLI de dotnet a través del paquete NuGet Amazon.Lambda.Tools
ejecutando dotnet lambda help
Comentario más útil
La resolución de dependencias nativas es algo en lo que estamos trabajando para mejorar. Como solución temporal hasta entonces, puede agregar en el archivo aws-lambda-tools-defaults.json la propiedad "additional-files" que forzará la resolución nativa. Una vez que hice esto, pude conectarme a una base de datos postgresql.