我通过NuGet安装了Libsodium,并且能够在我的类中包含钠,但是当我尝试运行它时,我得到了
“System.DllNotFoundException”类型的异常发生在Sodium.dll中,但未在用户代码中处理
其他信息:无法加载DLL 'libsodium.dll':找不到指定的模块。(HRESULT例外: 0x8007007E)
我只是尝试从gitbook文档hashing/index.html中运行示例代码。
const string PASSWORD = "Correct Horse Battery Staple";
const string SALT = "qa~t](84z<1t<1oz:ik.@IRNyhG=8q(o";
const long OUTPUT_LENGTH = 512;
//this will produce a 512 byte hash
var hash = PasswordHash.ScryptHashBinary(PASSWORD, SALT, PasswordHash.Strength.Medium, OUTPUT_LENGTH);发布于 2016-05-30 13:22:41
我有同样的问题,并解决了它使用Jørn Wildt's answer given here。
事实证明,ASP.NET不会复制非托管DLL,如libsodium.dll和libna-64.dll。 Sodium.dll (托管代码)尝试从与Sodium.dll的影子副本相同的目录加载DLL(这是行不通的),或者在PATH环境变量的目录中加载DLL。 我的解决方案是在调用任何钠代码之前将AppDomain \Bin目录添加到路径中: string path = Environment.GetEnvironmentVariable(" path ");string binDir =Environment.GetEnvironmentVariable“Bin”;Environment.SetEnvironmentVariable("PATH",path+ ";“+ binDir);
正如鲁本对答案的评论一样,我在我的Application_Start Global.asax方法中添加了上面的代码。
发布于 2017-07-13 10:39:53
我也有这个。解决方案的第一部分是像@NiklasEkman那样,将目录添加到PATH变量中。
但是,在我们的QA环境中部署时,我得到了完全相同的错误。在花了几个小时处理权限之后,试图找出dll是否在正确的目录中,类似地,我遇到了这样的帖子:https://mspcontrol.org/forums/topic/add-user-error-unable-to-load-dll-libsodium-64-dll/#post-4765。
您必须安装Visual 2015的VisualC++可再发行版(13 Mb) https://www.microsoft.com/en-us/download/details.aspx?id=48145
最终为我解决了这个问题。
https://stackoverflow.com/questions/37347620
复制相似问题