【问题标题】:What Service name does one use for Workflow WCF Services (XAMLX)工作流 WCF 服务 (XAMLX) 使用什么服务名称
【发布时间】:2011-03-29 13:32:44
【问题描述】:

我试图弄清楚如何为我创建的 WF 服务 (MyFoo.xamlx) 提供端点等。通常,当您创建服务时,您需要让 Service name="" 反映您创建的服务类型?即通过填写这样的内容:

<Service name="MyNameSpace.Foo" behaviorConfiguration="myFooBehaviorConfig">

这适用于典型的 .svc 场景,我可以正常工作。只是如何将此概念映射到 .xamlx 服务?如果我有 Foo.xamlx 将其放在服务名称中不起作用 - 或者似乎不起作用(因为没有启用元数据)。

如果我随后从服务中删除 behaviorConfiguration 属性,并从 <behavior/> 标记中删除 myFooBehaviorConfig - 它本质上是然后为网络配置提供更多的全局设置 - 繁荣!我可以看到 .xamlx 公开的方法/操作?

<serviceBehaviors> <behavior name="foo" > 对比 <serviceBehaviors> <behavior >

起初这很好,不需要任何努力,但同时我不希望开发人员为此访问 HTTP 端点或网络管道。我只希望他们通过我指定的 net.tcp 端口进入。为了做到这一点,我需要以某种方式将&lt;Service name=""/&gt; 与 xamlx 匹配?

我也尝试过使用创建一个空的 .svc 文件然后以这种方式指向 xamlx 的技巧(这样开发人员总是假定它是 .svc 而不是 .xamlx)

&lt;%@ ServiceHost Language="C#" Debug="true" Service="ActivityHubService.xamlx" Factory="System.ServiceModel.Activities.Activation.WorkflowServiceHostFactory" %&gt;

再次,如果我删除命名行为等,这也可以通过 foo.svc ..但我似乎无法破解整个匹配 &lt;service&gt; 与怪异的 xamlx! :) 呵呵。

令人沮丧..

有谁是这个领域的专家?

【问题讨论】:

    标签: wcf web-config workflow-foundation-4 endpoint workflowservice


    【解决方案1】:

    我要把这个交给 GuerreroTook,因为尽管他给出的答案部分在正确的区域,但它确实引发了“是的,也许就是这么简单..”的思考......

    解决办法是这样的:


        <services>
    
      <service name="ActivityHubService" behaviorConfiguration="foo">
        <endpoint address="" binding="netTcpBinding" bindingConfiguration="netTCPStreamedBinding" contract="IService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://synapse.hub.security:669/SynapseHubSecurity/ActivityHubService" />
          </baseAddresses>
        </host>
      </service>
    </services>
    

    然后在我称为 PingService.svc 的服务中,我输入了这个:

    <%@ ServiceHost Language="C#" Debug="true" Service="ActivityHubService.xamlx" Factory="System.ServiceModel.Activities.Activation.WorkflowServiceHostFactory" %>
    

    这似乎成功了! :)

    不知道为什么,但我发誓我这样做了 3x 并且失败了..但是...我也需要睡觉..

    希望这将有助于其他人在同一赛道上的表现。

    【讨论】:

    • 我认为接受您自己的答案(因为它是最正确的答案)会是更传统的礼仪,并且只需支持@GuerreroTook 的答案,因为它对您有所帮助。下一个遇到相同问题的人可能更愿意在顶部看到最完整/正确的答案。 :)
    • 谢谢你,我整天都在用头撞砖墙 :) 上帝保佑你,上帝保佑 SO
    【解决方案2】:

    根据您的问题,我了解到您需要将 WF 工作流公开为 WCF 服务,并且您希望客户端通过 WCF 基础结构直接调用 WF,对吗?

    您面临的问题是您需要提供类的完整限定名,以便工厂找到并激活您的 WF 工作流程。如果您在 VisualStudio 中有一个典型的 WP 项目,则完整的限定名称是项目的名称 + 类名,请尝试使用。

    当您构建工作流 xaml 文件时,编译将生成一个包含代码和逻辑的类,并且遵循 xaml(WPF 和 Silverlight)编译器的相同行为,该类的名称将与文件相同(.xamlx)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多