Aws-lambda-dotnet: استثناء عند محاولة استخدام Npgsql للاتصال بمثيل RDS

تم إنشاؤها على ١٣ ديسمبر ٢٠١٦  ·  6تعليقات  ·  مصدر: aws/aws-lambda-dotnet

كان يستخدم 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

التعليق الأكثر فائدة

حل التبعيات الأصلية هو شيء نعمل على تحسينه. كعمل حتى ذلك الحين ، يمكنك إضافة خاصية "ملفات إضافية" في ملف aws-lambda-tools-defaults.json والتي ستفرض الدقة الأصلية. بمجرد القيام بذلك ، تمكنت من الاتصال بقاعدة بيانات postgresql.

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

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

ال 6 كومينتر

حل التبعيات الأصلية هو شيء نعمل على تحسينه. كعمل حتى ذلك الحين ، يمكنك إضافة خاصية "ملفات إضافية" في ملف aws-lambda-tools-defaults.json والتي ستفرض الدقة الأصلية. بمجرد القيام بذلك ، تمكنت من الاتصال بقاعدة بيانات postgresql.

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

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

لطيفة نورم 👍

أواجه نفس المشكلة ، ولكن مع .Net core على جهاز Mac. هل هناك ما يعادل "ملفات إضافية" عند عدم استخدام الاستوديو المرئي أو أدوات aws-lambda؟

إذا كنت تستخدم حزمة Amazon.Lambda.Tools NuGet للنشر ، فعند تنفيذ وظيفة نشر dotnet lambda ، ستقرأ ملف aws-lambda-tools-defaults.json تمامًا كما يفعل Visual Studio بما في ذلك قسم

أردنا التأكد من أن جميع ميزات النشر في Visual Studio كانت متاحة من خلال dotnet CLI لدعم المستخدمين على أجهزة Mac.

لقد أنقذتني هذه الإجابة الكثير من الألم الإضافي ... ومع ذلك ، تجدر الإشارة إلى أنه إذا كنت لا تستخدم VS لإنشاء الحزمة / التحميل الخاص بك ولكن بدلاً من ذلك ، فإن أدوات coreclr العادية (مثل "نشر dotnet") ، فإن أي إعدادات في أدوات aws-lambda- يتم تجاهل defaults.json ، لذا يلزم نسخ هذا الملف يدويًا إلى جذر الحزمة dir.

أوصي بدلاً من استخدام dotnet publish باستخدام إما dotnet lambda package . سيؤدي هذا إلى نفس الحزم الذي نقوم به في Visual Studio ولكن من dotnet CLI. يمكنك الاطلاع على القائمة الكاملة للأوامر التي أضفناها إلى dotnet CLI عبر حزمة NuGet Amazon.Lambda.Tools بتنفيذ dotnet lambda help

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات