libsodium-64.dll不在生产中的Azure服务集群布发现 [英] libsodium-64.dll not found in production Azure Service Fabric cluster

查看:1178
本文介绍了libsodium-64.dll不在生产中的Azure服务集群布发现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用libsodium网为所有在Azure的服务面料可靠服务其安全性的善良,我的本地开发群集上一切工作正常(虽然我也必须设置libsodium-64.dll复制到输出目录)

Using libsodium-net for all of its security goodness in an Azure Service Fabric Reliable Service, on my local dev cluster everything is working fine (although I did have to set the libsodium-64.dll to copy to the output directory).

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

Unfortunately, when deployed to a real cluster in Azure it throws the following error:

无法加载DLLlibsodium-64.dll:指定的模块找不到。 (异常来自HRESULT:0x8007007E)

我已经通过检查远程桌面-ING到一个节点和DLL跨越到复制相同的目录服务,正是因为它是在我的dev集群。 。不能工作了,为什么不能在生产中找到

I've checked by Remote Desktop-ing into one of the nodes and the DLL is copied across into the same directory as the service, exactly as it is in my dev cluster. Can't work out why it can't be found in production.

我试过设置PATH环境变量中的this回答,并验证它实际上被置 - 遗憾的是没有帮助

I've tried setting the PATH environment variable as suggested in this answer, and verified that it does actually get set - unfortunately that doesn't help.

有没有什么特别的,我需要做的就是ASF拿起DLL

Is there anything special I need to do to get ASF to pick up the DLL?

编辑:也尝试添加DLL到System32下的所有节点上,并没有解决它的。

also tried adding the DLL to System32 on all the nodes, didn't solve it either.

推荐答案

原来libsodium-64.dll依赖在Visual C ++运行,这似乎并不存在于Azure的虚拟机。冉进程监视器提到的这里,看见有人拿起libsodium-64.dll,但失败的vcruntime140.dll - 独异常消息使这几乎是不可能的工作了。

Turns out libsodium-64.dll depends on the Visual C++ Runtime, which didn't seem to be present on the Azure VMs. Ran Process Monitor as mentioned here and saw it was picking up "libsodium-64.dll" but failing on "vcruntime140.dll" - the exception message alone makes this pretty much impossible to work out.

安装Visual C ++可再发行的虚拟机和一切的看起来的被现在的工作很好。

Installed the Visual C++ Redistributable on the VMs and everything seems to be working fine now.

如果有人碰巧碰到了同样的问题,你可以通过添加以下扩展到您的ARM部署模板设置规模的虚拟机配置文件(VMSS解决 - >属性 - > virtualMachineProfile - > extensionProfile - >扩展):

If anyone happens to run into the same problem, you can solve it by adding the following extension to the VM profile of the scale set in your ARM deployment template (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"
        }
    }
}

它所做的就是抢的安装程序,然后静静地运行它。似乎没有成为一个公共链接到可再发行,所以我只是下载了它,并把它变成Blob存储。

All it does is grab the installer, and run it silently. There didn't seem to be a public link to the redistributable, so I just downloaded it and put it into blob storage.

这篇关于libsodium-64.dll不在生产中的Azure服务集群布发现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆