2012-07-23 89 views
1

可能重复:
RESTful Workflow Service Endpoints in WF4/WCFWCF工作流服务REST接口

我试图让Windows工作流服务4.0工作与REST接口。我有一个非常简单的工作流服务,名为“Service1”,带有一个receiveRequest和sendResponse活动。

默认情况下,WF服务自动生成实现的类和接口,但是我想强制WF服务使用我自己的启用REST的接口而不是一些内部自动生成的接口。

的接口将是以下几点:

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    [WebInvoke(UriTemplate = "/Data/{item}", Method = "GET")] 
    String GetData(Int32 item); 
} 

然而,我在配置XAML的困难与此接口的工作。 我需要一个像这样的XAML配置,以指定服务合同的名字是我自己的合同:

<Receive x:Name="__ReferenceID0" CanCreateInstance="True" DisplayName="ReceiveRequest" sap:VirtualizedContainerService.HintSize="464,90" OperationName="GetData" ServiceContractName="w:IService"> 

然而,当我运行这个工作流服务我得到以下异常:

合同名称无法在服务'Service1'实施的合同列表中找到'wfService.IService'。

然而,被幕后创建的服务没有实现IService接口,我想知道我怎么可以扩展得到由工作流引擎实例化的服务来实现自己的界面(我描述以上)?

谢谢

+0

看看@Maurice的答案[这里](http://stackoverflow.com/questions/3678129/restful-workflow-service-endpoints-in-wf4-wcf)。 – 2012-08-21 12:46:04

回答

3

在WF4中,您不能在代码中声明ServiceContract并使用它。合同在XAML中声明,WorkflowServiceHost从声明中生成端点。

要启用REST为您workflowservice您有几种选择:

  1. 使用HttpWorkflowHost从http://wf.codeplex.com/wikipage?title=WebAPIWorkflow。限制是,那么你将只有REST。
  2. 做同样的事情到这一点:http://msdn.microsoft.com/en-us/library/aa967564.aspx 的差异是:更换WorkflowFormatterBehavior代替DataContractSerializerOperationBehavior,参数从消息契约,而不是经营合同提取,并记住,你不会有这个例子中的客户端部分,你将不得不格式根据协议进行响应。