Aws-lambda-dotnet: Exception lors de la tentative d'utilisation de Npgsql pour se connecter à une instance RDS

Créé le 13 déc. 2016  ·  6Commentaires  ·  Source: aws/aws-lambda-dotnet

J'utilisais 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

Commentaire le plus utile

La résolution des dépendances natives est quelque chose sur lequel nous travaillons pour nous améliorer. Comme solution de contournement jusque-là, vous pouvez ajouter dans le fichier aws-lambda-tools-defaults.json la propriété "additional-files" qui forcera la résolution native. Une fois que j'ai fait cela, j'ai pu me connecter à une base de données postgresql.

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

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

Tous les 6 commentaires

La résolution des dépendances natives est quelque chose sur lequel nous travaillons pour nous améliorer. Comme solution de contournement jusque-là, vous pouvez ajouter dans le fichier aws-lambda-tools-defaults.json la propriété "additional-files" qui forcera la résolution native. Une fois que j'ai fait cela, j'ai pu me connecter à une base de données postgresql.

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

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

Joli Norm

J'ai le même problème, mais avec le noyau .Net sur un Mac. Existe-t-il un équivalent à "fichiers supplémentaires" lorsque vous n'utilisez pas Visual Studio ou aws-lambda-tools ?

Si vous utilisez le package Amazon.Lambda.Tools NuGet pour le déploiement, lorsque vous exécutez la fonction de déploiement lambda de dotnet, il lira le fichier aws-lambda-tools-defaults.json tout comme Visual Studio le fait, y compris la section des fichiers supplémentaires .

Nous voulions nous assurer que toutes les fonctionnalités de déploiement de Visual Studio étaient disponibles via la CLI dotnet pour prendre en charge les utilisateurs sur Mac.

Cette réponse m'a épargné beaucoup de peine supplémentaire... mais il convient de noter que si vous n'utilisez pas VS pour créer votre package/téléchargement, mais plutôt les outils coreclr habituels (c'est-à-dire "dotnet publish"), tous les paramètres dans aws-lambda-tools- defaults.json sont ignorés, il est donc nécessaire de copier manuellement ce fichier à la racine du répertoire du package.

Je recommande au lieu d'utiliser dotnet publish utiliser soit dotnet lambda package . Cela fera le même emballage que nous faisons dans Visual Studio mais à partir de la CLI dotnet. Vous pouvez voir la liste complète des commandes que nous avons ajoutées à la CLI dotnet via le package NuGet Amazon.Lambda.Tools en exécutant dotnet lambda help

Cette page vous a été utile?
0 / 5 - 0 notes