调试编码的WorkflowServiceHost

时间:2012-07-05 13:38:40

标签: c# wcf .net-4.0 workflow-foundation-4 workflow-services

是否可以调试已编码的Windows Workflow .Net 4.0.1自托管WorkflowServiceHost? 我有

<system.web>
  <compilation debug="true" />
</system.web>

在app.config文件中设置。但是,每当我设置一个断点时,调试器就会在构造WorkflowServiceHost对象时停止,而不是在单个工作流实例到达断点时停止。

“编码”是指工作流程是用C#而不是视觉设计师指定的。

2 个答案:

答案 0 :(得分:4)

我在不同容器中托管的各种流程图和顺序工作流程中处于类似的地位。我发现使用Microsoft.Activities.UnitTesting框架在测试工作流程时让我的生活变得更轻松。该库可作为nuGet包提供。完成详细信息here

这使得在“测试主机”中运行工作流变得非常容易,这些特殊类提供了运行工作流的能力,因为它们通常在workflowinvoker,workflowservicehost等中运行,但提供了大量允许您调试的功能,跟踪您的工作流程。

入门非常简单,已经提供了大量样本(包括测试工作流服务托管工作流程的样本)。

我强烈建议使用这个库,几乎没有学习曲线,这使得测试工作流程非常容易。

希望这有帮助。

但有一点需要注意,如果您打算使用它,请确保安装了.NET framework 4 Platform Update 1。有关此更新的更多详细信息,请访问here

答案 1 :(得分:1)

您的Workflow dll是否位于不同项目中?

MSDN

  

如果位于工作流主机应用程序和工作流DLL中   不同的Visual Studio项目,例如,当您使用时   工作流活动库,您必须将工作流DLL项目设置为   使用Visual Studio解决方案启动项目来调试工作流程   F5。您还必须在工作流程中设置主机应用程序的路径   DLL项目的启动外部程序属性。

     

要在“解决方案资源管理器”中设置启动项目,请右键单击该项目   输入name并选择Set as StartUp Project。设置主机的路径   启动外部程序属性,双击工作流程   解决方案资源管理器中项目的Properties节点,然后选择Debug   标签。在“开始操作”下,选择“启动外部程序”并输入   托管要调试的工作流的.exe文件的路径。

     

如果将主机应用程序设置为启动项目,则只显示Visual   调用Studio调试器进行调试; Visual Studio 2010   不调用Windows Workflow Foundation的调试程序。如果是视觉   使用Studio调试器,只有C#或Visual Basic代码断点   击中;工作流设计器中设置的断点未命中。对于   例如,您在ParallelActivity活动中设置的断点   如果用于Windows的Visual Studio 2010调试器,设计器将被击中   使用Workflow Foundation,但不使用Visual Studio时   调试器。

看看它对你有帮助。