1

我试图找出如何提供终端等的WF服务,我创建(MyFoo.xamlx)一个使用。通常,当您创建服务时,您需要使用服务名称=“”反映您创建的服务类型?即通过填写这样的:什么服务名称确实为工作流WCF服务(XAMLX)

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

该作品在一个典型的.svc场景,我可以得到的工作的罚款。只有如何将这个概念映射到.xamlx服务?在,如果我有Foo.xamlx把里面的服务名称不工作 - 或(使能在没有元数据)不会出现工作。

如果我再从服务中删除behaviorConfiguration属性,也从<behavior/>标签取下myFooBehaviorConfig - 在它本质上则需要更多的全局设置为网络配置 - 轰!我可以看到.xamlx暴露的方法/操作?

<serviceBehaviors> <behavior name="foo" > VS <serviceBehaviors> <behavior >

起初,这是伟大的,不需要任何的努力,但在同一时间,我不想开发者访问HTTP端点或netpipe对这一问题。我只希望他们通过我指定的端口net.tcp进入。为了做到这一点,我需要以某种方式将<Service name=""/>与xamlx匹配?

我使用创建一个空的.svc文件,然后指着xamlx这种方式(以便开发者总是以为它是一个.SVC而不是.xamlx)

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

的伎俩也尝试

同样,如果我删除命名的行为等,这也通过foo.svc ..但我似乎就是无法破解的整体匹配与一个刻着xamlx一个<service>的作品! :) 呵呵。

沮丧..

任何人在这个领域的专家?

回答

5

我要去给这一个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" %> 

这似乎做的伎俩! :)

不知道为什么,但我发誓我没有这个像3倍,它failed..but ...我也是有需要的睡眠..

希望这将有助于其他人在同一果酱下来跟踪。

+0

我认为这将是更传统的礼仪接受你自己的答案(因为它是最正确的),只是upvote @ GuerreroTook的答案,因为它帮助你。下一个遇到同样问题的人可能更喜欢在顶部看到最完整/正确的答案。 :) – jalf 2011-03-29 16:10:27

+0

谢谢你,我一直在头撞砖墙整天在这:)上帝保佑你,上帝保佑SO – 2011-05-03 15:28:15

2

根据你的要求,我明白你需要暴露一个WF工作流作为一个WCF服务,你想客户端通过WCF基础设施直接拨打电话WF,是这样吗?

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

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