在生产Azure Service Fabric群集中找不到libsodium-64.dll
使用libsodium-net在Azure Service Fabric Reliable Service中实现其所有安全性,在我的本地开发群集上一切正常(尽管我必须将libsodium-64.dll设置为复制到输出目录)。
不幸的是,当部署到Azure中的真实集群时,它会抛出以下错误:
Unable to load DLL 'libsodium-64.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
我已通过远程桌面检查到其中一个节点,并将DLL复制到与服务相同的目录中,就像在我的开发群集中一样。 无法解决为什么在生产中找不到它。
我已经尝试按照这个答案中的建议设置PATH环境变量,并validation它实际上已经设置 – 不幸的是,这没有帮助。
为了让ASF拿起DLL,我需要做些什么特别的事情吗?
编辑:还尝试在所有节点上将DLL添加到System32,也没有解决它。
原来libsodium-64.dll取决于Visual C ++运行时,它似乎不存在于Azure VM上。 Ran Process Monitor如此处所述,并且看到它正在拾取“libsodium-64.dll”但是在“vcruntime140.dll”上失败 – 单独的exception消息使得这几乎无法解决。
在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" } } }
它只是抓住安装程序,然后静默运行它。 似乎没有与可再发行组件的公共链接,所以我只是将其下载并将其放入blob存储中。
- Azure服务结构actordependency injection
- Service Fabric在启动时生成actor
- 从Service Fabric WebAPI控制器写入ServiceEventSource
- 有状态服务的dependency injection
- Service Fabric包含其他文件
- Azure Service Fabric Actors – 未处理的exception?
- 如何查看是否在服务结构下运行
- azure色的服务面料可靠的字典linq查询非常慢
- 在Azure Service Fabric服务中实例化ServiceInitializationParameters的位置和方式是什么?