在生产 Azure Service Fabric 集群中找不到 libsodium-64.dll
libsodium-64.dll not found in production Azure Service Fabric cluster
在 Azure Service Fabric 可靠服务中使用 libsodium-net 来实现其所有安全优势,在我的本地开发集群上一切正常(尽管我确实必须将 libsodium-64.dll 设置为复制到输出目录)。
不幸的是,当部署到 Azure 中的真实集群时,它会抛出以下错误:
Unable to load DLL 'libsodium-64.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
我已经通过远程桌面检查到其中一个节点,并且 DLL 被复制到与服务相同的目录中,就像它在我的开发集群中一样。无法弄清楚为什么在生产中找不到它。
我已尝试按照 中的建议设置 PATH 环境变量,并验证它确实得到了设置 - 不幸的是,这没有帮助。
我需要做什么特别的事情才能让 ASF 获取 DLL 吗?
编辑:也尝试在所有节点上将 DLL 添加到 System32,也没有解决。
事实证明 libsodium-64.dll 依赖于 Visual C++ 运行时,它似乎不存在于 Azure VM 上。 运行 Process Monitor as mentioned here 并看到它正在接收 "libsodium-64.dll" 但在 "vcruntime140.dll" 上失败 - 仅异常消息就使这几乎不可能解决。
在 VM 上安装了 Visual C++ Redistributable,现在一切似乎工作正常。
如果有人碰巧 运行 遇到同样的问题,您可以通过将以下扩展添加到 ARM 部署模板中规模集的 VM 配置文件(VMSS -> 属性 -> 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 link,所以我只是下载它并将其放入 blob 存储中。
在 Azure Service Fabric 可靠服务中使用 libsodium-net 来实现其所有安全优势,在我的本地开发集群上一切正常(尽管我确实必须将 libsodium-64.dll 设置为复制到输出目录)。
不幸的是,当部署到 Azure 中的真实集群时,它会抛出以下错误:
Unable to load DLL 'libsodium-64.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
我已经通过远程桌面检查到其中一个节点,并且 DLL 被复制到与服务相同的目录中,就像它在我的开发集群中一样。无法弄清楚为什么在生产中找不到它。
我已尝试按照
我需要做什么特别的事情才能让 ASF 获取 DLL 吗?
编辑:也尝试在所有节点上将 DLL 添加到 System32,也没有解决。
事实证明 libsodium-64.dll 依赖于 Visual C++ 运行时,它似乎不存在于 Azure VM 上。 运行 Process Monitor as mentioned here 并看到它正在接收 "libsodium-64.dll" 但在 "vcruntime140.dll" 上失败 - 仅异常消息就使这几乎不可能解决。
在 VM 上安装了 Visual C++ Redistributable,现在一切似乎工作正常。
如果有人碰巧 运行 遇到同样的问题,您可以通过将以下扩展添加到 ARM 部署模板中规模集的 VM 配置文件(VMSS -> 属性 -> 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 link,所以我只是下载它并将其放入 blob 存储中。