可能的重复:
WF4 / WCF 中的 RESTful 工作流服务端点
我正在尝试使 Windows Workflow Services 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 接口,我想知道如何扩展由工作流引擎实例化的服务来实现我自己的接口(我上面描述过)?
Thanks
在 WF4 中,您无法在代码中声明 ServiceContract 并使用它。合同在 XAML 中声明,WorkflowServiceHost 根据声明生成端点。
要为您的工作流程服务启用 REST,您有以下几种选择:
- 使用 HttpWorkflowHost 来自http://wf.codeplex.com/wikipage?title=WebAPIWorkflow。限制是你只能休息。
- 做类似这样的事情:http://msdn.microsoft.com/en-us/library/aa967564.aspx区别是:替换 WorkflowFormatterBehavior 而不是 DataContractSerializerOperationBehavior,参数是从消息契约而不是操作契约中提取的,请记住,您将没有此示例的客户端部分,并且必须根据协议格式化响应。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)