我正在使用C#运行时(.NET Core)编写使用AWS Lambda函数的Alexa技能,并尝试使用其API连接到Google表单。它在运行时抛出了一个丢失的DLL异常:
System.Security.Cryptography.CngKeyLite'的类型初始值设定项。抛出异常。
at System.Security.Cryptography.CngKeyLite.ImportKeyBlob(String blobType,Byte [] keyBlob)
at System.Security.Cryptography.RSAImplementation.RSACng.ImportKeyBlob(Byte [] rsaBlob,Boolean includePrivate)
在System.Security.Cryptography.RSAImplementation.RSACng.ImportParameters(RSAParameters参数)
at Google.Apis.Auth.OAuth2.ServiceAccountCredential.Initializer.FromPrivateKey(String privateKey)
at Google.Apis.Auth.OAuth2.DefaultCredentialProvider.CreateServiceAccountCredentialFromParameters(JsonCredentialParameters credentialParameters)
at Google.Apis.Auth.OAuth2.DefaultCredentialProvider.CreateDefaultCredentialFromParameters(JsonCredentialParameters credentialParameters)
在AlexaProjLib.GoogleSheet.Connect()
在AlexaProj.Function.FunctionHandler(SkillRequest输入,ILambdaContext上下文)
内部异常:
无法加载DLL' ncrypt.dll':找不到指定的模块。
代码:
var credential = GoogleCredential.FromJson(_googleSecret).CreateScoped(_scopes);
Service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = _applicationName,
});
我是.NET Core和Lambda的新手 - 如何正确引用丢失的DLL?
答案 0 :(得分:0)
尝试按照this github forum中提供的说明进行操作,因为其他用户也会遇到此问题。
execute
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
instead of
ln -s /usr/local/Cellar/openssl/1.0.2h_1/lib/libcrypto.1.0.0.dylib /usr/local/lib
ln -s /usr/local/Cellar/openssl/1.0.2h_1/lib/libssl.1.0.0.dylib /usr/local/lib
if you receive "File exists" message ln -sf will do the magic..
ln -sf /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
ln -sf /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
答案 1 :(得分:0)
问题结果是我在project.json文件(win10-x64)中定义了一个Windows运行时,这导致了这些运行时错误(AWS Lambda在Amazon Linux上运行)。最后使用 dotnet lambda package 编译并运行它,并提供更多详细信息here。