gpt4 book ai didi

c# - 在生产 Azure Service Fabric 集群中找不到 libsodium-64.dll

转载 作者:行者123 更新时间:2023-11-30 14:07:46 25 4
gpt4 key购买 nike

在 Azure Service Fabric 可靠服务中使用 libsodium-net 以实现其所有安全优势,在我的本地开发集群上一切正常(尽管我确实必须设置 libsodium-64.dll 以复制到输出目录) .

不幸的是,当部署到 Azure 中的真实集群时,它会抛出以下错误:

无法加载 DLL“libsodium-64.dll”:找不到指定的模块。 (HRESULT 异常:0x8007007E)

我已经通过远程桌面检查到其中一个节点,并且 DLL 被复制到与服务相同的目录中,就像它在我的开发集群中一样。无法弄清楚为什么在生产环境中找不到它。

我已尝试按照 this answer 中的建议设置 PATH 环境变量,并验证它确实已设置 - 不幸的是,这没有帮助。

要让 ASF 获取 DLL,我需要做什么特别的事情吗?

编辑:也尝试在所有节点上将 DLL 添加到 System32,也没有解决。

最佳答案

原来 libsodium-64.dll 依赖于 Visual C++ 运行时,它似乎不存在于 Azure VM 上。然Process Monitor如前所述here并看到它正在拾取“libsodium-64.dll”但在“vcruntime140.dll”上失败 - 仅异常消息就使这几乎不可能解决。

在 VM 上安装了 Visual C++ Redistributable,现在一切似乎都运行良好。

如果有人碰巧遇到同样的问题,您可以通过在 ARM 部署模板中的规模集的 VM 配置文件中添加以下扩展来解决它(VMSS -> properties -> virtualMachineProfile -> extensionProfile -> extensions) :

{
"name": "InstallVCRuntime",
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.7",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"https://some.blob.storage.url/vc_redist.x64.exe"
],
"commandToExecute": "vc_redist.x64.exe /q /norestart"
}
}
}

它所做的只是获取安装程序,然后静默运行它。似乎没有指向可再发行组件的公共(public)链接,所以我只是下载它并将其放入 blob 存储中。

关于c# - 在生产 Azure Service Fabric 集群中找不到 libsodium-64.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38383411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com