我使用.NET核心创建了一个aws Lambda函数。运行lambda函数时,我收到以下错误:
(无法加载DLL'BCrypt.dll':找不到指定的模块。 (来自HRESULT的异常:0x8007007E)):AggregateException 在System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) 在System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) 在lambda_method(Closure,Stream,Stream,ContextInfo) 在Interop.BCrypt.BCryptGenRandom(IntPtr hAlgorithm,Byte * pbBuffer,Int32 cbBuffer,Int32 dwFlags) 在Interop.BCrypt.BCryptGenRandom(Byte [] pbBuffer,Int32 cbBuffer) 在System.Security.Cryptography.RNGCryptoServiceProvider.GetBytes(Byte [] data) 在User.Util.GetSalt(ILambdaContext上下文) 在User.Functions.d__1.MoveNext()
从以下代码抛出:
public static string GetSalt()
{
byte[] bytes = new byte[128 / 8];
using(var keyGenerator = RandomNumberGenerator.Create())
{
keyGenerator.GetBytes(bytes);
return BitConverter.ToString(bytes).Replace("-", "").ToLower();
}
}
这行代码破了:
keyGenerator.GetBytes(bytes);
我相信.net核心应该可以跨平台工作(因为aws使用的是unix机器)。
从我在网上找到的所有内容来看,这似乎是最好的方法。