简体   繁体   English

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

[英]libsodium-64.dll not found in production Azure Service Fabric cluster

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). 使用libsodium-net在Azure Service Fabric Reliable Service中实现其所有安全性,在我的本地开发群集上一切正常(尽管我必须将libsodium-64.dll设置为复制到输出目录)。

Unfortunately, when deployed to a real cluster in Azure it throws the following error: 不幸的是,当部署到Azure中的真实集群时,它会抛出以下错误:

Unable to load DLL 'libsodium-64.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

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. 我已通过远程桌面检查到其中一个节点,并将DLL复制到与服务相同的目录中,就像在我的开发群集中一样。 Can't work out why it can't be found in production. 无法解决为什么在生产中找不到它。

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. 我已经尝试按照这个答案中的建议设置PATH环境变量,并验证它确实设置了 - 不幸的是,这没有帮助。

Is there anything special I need to do to get ASF to pick up the DLL? 为了让ASF拿起DLL,我需要做些什么特别的事情吗?

Edit: also tried adding the DLL to System32 on all the nodes, didn't solve it either. 编辑:还尝试在所有节点上将DLL添加到System32,也没有解决它。

Turns out libsodium-64.dll depends on the Visual C++ Runtime, which didn't seem to be present on the Azure VMs. 原来libsodium-64.dll依赖于Visual C ++ Runtime,它似乎不存在于Azure VM上。 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. Ran Process Monitor就像这里提到的那样,看到它正在拾取“libsodium-64.dll”,但是在“vcruntime140.dll”上失败 - 单独的异常消息使得这几乎无法解决。

Installed the Visual C++ Redistributable on the VMs and everything seems to be working fine now. 安装在虚拟机中的Visual C ++可再发行,一切似乎是现在的工作很好。

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): 如果有人碰巧遇到同样的问题,您可以通过将以下扩展添加到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"
        }
    }
}

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. 似乎没有与可再发行组件的公共链接,所以我只是将其下载并将其放入blob存储中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 复制在Azure Service Fabric群集上部署的服务 - Replication of Services deployed on Azure Service Fabric Cluster 在Azure中收集Service Fabric群集日志 - Collect Service Fabric Cluster logs in Azure 在 Visual Studio 中为 5 节点群集调试 Azure Service Fabric 应用程序 - Debugging Azure Service Fabric Application in Visual Studio for 5 node cluster Azure应用服务上的Service Fabric客户端。 无法加载DLL'FabricCommon.dll' - Service Fabric Client on Azure App Service. Unable to load DLL 'FabricCommon.dll' 模拟来自Azure Service Fabric群集的10,000个Azure IoT中心设备连接 - Simulate 10,000 Azure IoT Hub Device connections from Azure Service Fabric cluster Azure Service Fabric缩放 - Azure Service Fabric Scaling EntityFramework with service app fabric .net core stateless API SNI.dll not found 错误 - EntityFramework with service app fabric .net core stateless API SNI.dll not found error Azure Service Fabric actor微服务 - Azure Service Fabric actor microservice Azure Service Fabric:对Linux的支持 - Azure Service Fabric : Support for Linux Azure Service Fabric:使用分区键ID(Int64RangePartitionInformation)创建代理 - Azure Service Fabric : Creating a proxy with the partition key ID (Int64RangePartitionInformation)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM