【问题标题】:Call C# Function from VB Script Not working从 VB 脚本调用 C# 函数不起作用
【发布时间】:2023-03-24 20:44:01
【问题描述】:

VB 脚本没有从工作流中调用 c# 方法。我做对了吗?我可以从服务器测试相同的代码。

Option Explicit
Dim testwfhandler
Set testwfhandler= CreateObject("CoreComponentWorkflow.WorkflowHandler")
If Not testwfhandler Is Nothing Then    
Call testwfhandler.test()    
End If
Set testwfhandler= Nothing

【问题讨论】:

    标签: c# com vbscript tridion tridion-2011


    【解决方案1】:

    过去几天我一直在处理类似的问题。

    毫无疑问,我的注册有问题。

    就我而言,我使用位于以下位置的 regasm 注册了程序集:

    • C:\Windows\Microsoft.NET\Framework64\v4.0.30319

    工作流代理是一个 32 位应用程序,所以我刚刚使用 regasm 可执行文件注册了程序集:

    • C:\Windows\Microsoft.NET\Framework\v4.0.30319

    而且工作得像个魅力

    还要确保您构建的 dll 可以与任何 CPU 一起使用

    【讨论】:

      【解决方案2】:

      这显然是您的大会注册问题。您是“只使用”RegAsm,还是使用了 RegAsm /codebase?

      无论如何,在您的注册表中搜索“CoreComponentWorkflow.WorkflowHandler”。您应该找到一个具有较大 GUID 的键,并且在其下方应该有一系列其他注册表键。其中之一将称为 InProcServer32,您应该在其中找到一些字符串值,包括“Assembly”和“Codebase”。

      如果找到密钥,请仔细检查值是否正确。如果您没有找到密钥,请尝试使用 RegAsm /codebase <path to your assembly> 再次注册您的程序集

      【讨论】:

      • 谢谢 Nuno,我已经注册了 RegAsm /codebase。我能够在注册表中找到该条目。在 InProcServer32 下,1.Assembly = CoreComponentWorkflow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=21f061a704295678 2. Codebase = file:///F:/Workflow-Server/CoreComponentWorkflow/bin/Debug/CoreComponentWorkflow.DLL 3. 类=CoreComponentWorkflow.WorkflowHandler 4. Runtimeversion = v4.0.30319 5. ThreadingModel = Both。 6. Default=mscoree.dll 对于所有 6 个条目,类型为“REG_SZ”,密钥名称为“HKEY_CLASSES_ROOT\CLSID\{37703D4A-7F28-3A36-9E83-03B2BA07E977}”
      • 这是我的 assemblyinfo.cs 文件 928693b3-74ad-44df-b084-6df7c65c1832 中的 GUID。我可以在注册表的几个地方找到上述详细信息。 HKEY_CLASSES_ROOT 和 HKEY_LOCAL_MACHINE
      • “ActiveX 组件无法创建对象”可能是有史以来最常见的错误之一。你有没有试过在你的构造函数中放一些东西来证明它被调用了?您可以附加到工作流服务并尝试调试它吗?也许您可以尝试写入文件以确保您的代码至少被调用?
      • 我想用 C# 编写文本文件,这也不起作用,似乎没有从 VB 调用 C# 代码。
      • Nuno,您能指导我简单地调试一下工作流位吗?有任何指南/步骤/文档吗?
      【解决方案3】:

      您的 VB 似乎没问题。确保你: 1)注册您的程序集(使用 RegAsm)或将其放入 GAC。 2) 将代码中的 ProgId 设置为“CoreComponentWorkflow.WorkflowHandler”。以下是有关 ProgIds 的更多信息:http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.progidattribute(v=vs.90).aspx

      【讨论】:

      • 我确定,我已经使用 RegAsm.exe 进行了注册(我已经测试了在服务器中使用 vb 脚本代码创建 com 对象,它工作正常)并且我也使用了 te ProgId,并设置了 comvisible也正确。以上代码在服务器上运行良好(当我作为 .vbs 文件执行时),但从工作流脚本编辑器运行时它不工作。
      • 请检查事件查看器并将错误消息粘贴到此处。
      • 您指的是 CME 管理选项卡中的“打开事件日志”吗?
      • 我实际上指的是 Tridion 服务器事件查看器中的 Tridion 日志。
      • 执行工作流脚本时出错。脚本引擎返回以下信息:源:行 = 3 列 = 0 数字 = 429 源 = Microsoft VBScript 运行时错误描述 = ActiveX 组件无法创建对象:'CoreComponentWorkflow.WorkflowHandler' HelpContext = 0 原因:Microsoft VBScript 运行时错误和描述:ActiveX 组件无法创建对象:'CoreComponentWorkflow.WorkflowHandler' 来源:LogScriptError
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-26
      相关资源
      最近更新 更多