好的,所以我可能会接近这个错误,但本质上我试图在4.0中使用新的WF服务来建立一个Windows服务,托管一个WF服务。目前我已经构建了客户端(包含一个简单的Activity XAML)和服务(在XAMLX文件中实现了WF服务)项目。托管工作流与WorkflowServiceHost
我已经尝试过简单的“hello worlds”for each one。客户端托管在WorkflowApplication
中,我最初将该服务设置为默认的WF服务项目模板。在那里似乎都很好。
由于我想在没有IIS的情况下托管一项服务,所以我的下一次尝试是将我的服务托管在WorkflowServiceHost
中。这样做,我可以使用XamlServices.Load()
并将它返回的对象连同端点的URI一起传递给WorkflowServiceHost
构造函数。我很担心,因为类中没有Run()
成员方法。我假设Open()
方法会将服务主机对象作为服务来打开,并且它会启动工作流的实例,但没有任何指示。
起初,我设置了服务工作流程,以便在开始时写入文本文件,但没有发生任何事情。我试图用断点进行调试,但由于它在运行时加载了XAMLX文件,因此VS不允许我调试WF。所以我尝试改变客户端项目以使用WorkflowServiceHost
而不是WorkflowApplication
。我使用了相同的工作流程来测试hello世界风格的工作流程,这一次没有输出到控制台,并且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();