我们希望将ASP.NET WebApi服务部署到Azure Service Fabric。
该服务使用数学COM组件(32位),该组件将使用regsvr32在常规计算机上注册。
该解决方案在本地Service Fabric群集(例如Windows Server 2012 R2)上运行良好。 遗憾的是,该组件没有可用的托管dll,我们不希望自己重写代码。
所以我的问题是,我们可以将此服务部署到Azure托管的Service Fabric吗?
如果是,怎么样?
答案 0 :(得分:1)
您如何通过PInvoke在本地群集上调用它?有几个想法可以提供帮助:
您可以使用COM Interop:
tlbimp YourComDll.dll /out: YourDotNetWrapper.dll
然后使用Service Fabric服务中的YourDotNetWrapper.dll
。你可能能够躲过" xcopy" COM组件的样式部署,即将其作为项目中的资源包含在内,并将其复制到输出文件夹,例如bin/Release
。
如果仍需要注册,可以使用Process.Start("regsvr32...")或via code (PInvoke)在代码中注册 - 认为您可能需要提升Service Fabric的权限。
您需要一种机制来仅注册一次,以避免向注册表发送垃圾邮件。也许是Reliable Dictionary of [NodeName],[IsOurComRegistered]
,或者只是在注册之前检查它是否已注册。
答案 1 :(得分:0)
您可以尝试通过StartUp使用regsvr32安装此COM,看看是否可行。