Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf 将ChannelFactory与WorkflowServiceHost一起使用_Wcf_Workflow Foundation 4_Workflow Foundation - Fatal编程技术网

Wcf 将ChannelFactory与WorkflowServiceHost一起使用

Wcf 将ChannelFactory与WorkflowServiceHost一起使用,wcf,workflow-foundation-4,workflow-foundation,Wcf,Workflow Foundation 4,Workflow Foundation,是否有一种方法可以对工作流定义XAML进行服务推断,以创建一个接口,该接口可以分发给客户端以与ChannelFactory一起使用,而不是主机公开WSDL,客户端必须通过添加服务引用来生成服务定义?我通过三个步骤完成了此操作: 暂时从工作流服务公开元数据 使用svcuti创建代理代码 将配置更改回不公开元数据 详细信息: 包括XAMLX文件,该文件在创建为“WCF工作流服务应用程序”(DeclarativeServiceLibrary1)的项目中定义服务 编制项目 将项目设置为启动项目 在解决

是否有一种方法可以对工作流定义XAML进行服务推断,以创建一个接口,该接口可以分发给客户端以与ChannelFactory一起使用,而不是主机公开WSDL,客户端必须通过添加服务引用来生成服务定义?

我通过三个步骤完成了此操作:

  • 暂时从工作流服务公开元数据
  • 使用svcuti创建代理代码
  • 将配置更改回不公开元数据
  • 详细信息:

    • 包括XAMLX文件,该文件在创建为“WCF工作流服务应用程序”(DeclarativeServiceLibrary1)的项目中定义服务
    • 编制项目
    • 将项目设置为启动项目
    • 在解决方案资源管理器中选择xamlx文件
    • 按Ctrl-F5->WCF测试客户端启动,您将看到您的服务已加载
    • 右键单击WCF测试客户端中的xamlx URL,选择复制地址(例如
      http://localhost:56326/Service1.xamlx
    • 打开VS2010管理控制台窗口
    • 使用svcutil.exe创建代理代码:
      • cd/D%TEMP%
      • svcutilhttp://localhost:56326/Service1.xamlx
      • 这将创建包含代理代码的两个文件*.cs和*.config

    我对代理代码的其他封装方式(在VS2010内部)有很多问题,外部svcutil是最稳定的方式。希望这能有所帮助。

    您的问题是否意味着“如何使用ChannelFactory调用我的wcf服务,而不从wsdl生成代理?”是的,evgenyl。我想为我的服务分发一个接口,就像在“公共”程序集中一样,不依赖WSDL/mex端点!使用svcutil是我的计划B,但我坚持要做一些可能更简单的事情。不幸的是,Visual Studio可以解析XAML,使其成为一个光彩夺目的拖放和设计器界面,但却无法输出简单的界面代码文件,特别是因为WorkflowServiceHost已经在运行。是的,类似的事情真的会让你发疯,你完全正确。至少他们给了我们……:)