Mis*_*ook 5 azure azure-functions
是否可以在Azure函数中使用In-Proc COM DLL?
我正在将Web服务迁移到Azure Functions。组件之一依赖于旧版32位COM DLL。这通常需要将DLL在将要使用的系统上进行regsvr32编辑。似乎对于Azure Functions而言是不可能的,是否可以使用此类旧版实现?
还是有必要恢复到传统的云服务来支持这一点?(我更喜欢使用“消费”服务计划,并从“无服务器”架构中受益。)
脚步:
错误日志报告异常:
无法加载文件或程序集“ Interop.MyCOMLib,版本= 1.0.0.0,区域性=中性,公共密钥令牌=空”或其依赖项之一。该系统找不到指定的文件。
执行函数时的异常:Legacy Microsoft.Azure.WebJobs.Host.FunctionInvocationException:执行函数时的异常:Legacy ---> System.IO.FileNotFoundException:无法加载文件或程序集'Interop.MyCOMLib,Version = 1.0.0.0,区域性= neutral,PublicKeyToken = null”或其依赖项之一。该系统找不到指定的文件。在System.Runtime.CompilerServices.AsyncTaskMethodBuilder的async Functions.Legacy.Run(HttpRequestMessage req,TraceWriter日志)处,在lambda_method(Closure,旧版,对象[]
在异步Microsoft.Azure.WebJobs.Host.Executors.TaskMethodInvoker 2.InvokeAsync(TReflected实例,Object []参数)在Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker 2.InvokeAsync [TReflected,TReturnValue](对象实例,对象异步Microsoft.Azure.Job上Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.InvokeAsync(IFunctionInvoker调用者,ParameterHelper parameterHelper,CancellationTokenSource timeoutTokenSource,CancellationTokenSource functionCancellationTokenSource,布尔throwOnTimeout,TimeSpan timerInterval,IFunctionInstances实例)在异步Web主机上。 .Executors.FunctionExecutor.ExecuteWithWatchersAsync(IFunctionInstance实例,ParameterHelper parameterHelper,TraceWriter traceWriter,CancellationTokenSource函数CancellationTokenSource)
在异步上Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(??)在异步上Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(??)
另外,如果我转到解决方案的Dependencies | COM然后选择Interop.Lib并选择“嵌入Interop类型”,然后在发布后通过调用已发布的函数进行此更改:
“由于以下错误,检索具有CLSID {D84F92D7-FFFF-4C16-B939-EC98E3A6EBC0}的组件的COM类工厂失败:80040154未注册类(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))。”
因此,挑战在于如何向Azure Functions注册COM类?
似乎无法在功能应用程序平台上运行regsvr32,在Kudu控制台上运行命令时,它显示“访问被拒绝”。
\n\n解决办法是:
\n\n1- 创建使用 COM lib 的小型 Web 服务并使用其功能并在 Windows VM 上托管此应用程序。
\n\n2-将代码的其他部分托管在函数应用程序中,而不是将函数应用程序引用到 COM ,您可以调用托管的 Web 服务(并传递您想要的任何参数)
\n\n或者您可以在虚拟机上部署完整代码,并且不使用 Function APP。
\n\n(感谢微软对这个答案的支持)。
\n| 归档时间: |
|
| 查看次数: |
466 次 |
| 最近记录: |