好的,所以我可能会错误地处理这个问题,但基本上我正在尝试使用 4.0 中的新 WF 服务来构建一个托管 WF 服务的 Windows 服务。目前我已经构建了客户端(包含一个简单的 Activity XAML)和服务(在 XAMLX 文件中实现的 WF 服务)项目。
我为每一个都尝试了简单的“hello worlds”。客户端已托管在 a 中WorkflowApplication
,我最初将该服务设置为默认 WF 服务项目模板。两者似乎都很好。
由于我想在没有 IIS 的情况下托管服务,自然我的下一个尝试是将我的服务托管在WorkflowServiceHost
. 这样做我可以使用XamlServices.Load()
它返回的对象WorkflowServiceHost
以及端点的 URI 并将其传递给构造函数。我很担心,因为没有Run()
像类中那样的成员方法WorkflowApplication
。我假设该Open()
方法会将服务主机对象作为服务打开,并且它将启动工作流的一个实例,但没有任何迹象。
起初,我将服务工作流程设置为在启动时简单地写入文本文件,但什么也没发生。我尝试使用断点进行调试,但由于它在运行时加载 XAMLX 文件,VS 不允许我调试 WF。因此,我尝试稍微更改客户端项目以使用 aWorkflowServiceHost
而不是WorkflowApplication
. 我使用了相同的工作流程来测试 hello world 风格的工作流程,这次没有输出到控制台,并且WorkflowApplication
之前成功了。
以下是我对客户端所做的在控制台项目中托管工作流服务的基本操作。如果有人想查看工作流的 XAML,请告诉我,我会更新这个问题。这是Main()
.
const String clientAddress = "http://localhost:9998/Client";
WorkflowServiceHost wfHost = new WorkflowServiceHost( new ClientWf(), new Uri(clientAddress) );
wfHost.Open();
while( Console.ReadKey().KeyChar.ToString().ToUpper() != "X" ) { }
wfHost.Close();