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