1

作成した WF サービス (MyFoo.xamlx) にエンドポイントなどを提供する方法を見つけようとしています。通常、Service を作成するときは、Service name="" に作成したサービスのタイプを反映させる必要がありますか? つまり、次のように入力します。

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

これは典型的な .svc シナリオで機能し、正常に機能することができます。この概念を .xamlx サービスにどのようにマッピングするのでしょうか? その中で、サービス名の中にFoo.xamlxを入れても機能しないか、機能していないように見えます (メタデータが有効になっていないため)。

次に、サービスからbehaviorConfiguration属性を削除し、タグから myFooBehaviorConfig<behavior/>も削除すると、基本的にWeb構成のグローバル設定がさらに多くなります-ブーム!.xamlx で公開されているメソッド/操作を確認できますか?

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

最初はこれは素晴らしいことで、労力は必要ありませんが、同時に、開発者が HTTP エンドポイントやネットパイプにアクセスすることを望んでいません。指定した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 を介して機能します..しかし、一致する a 全体<service> をフリーキン xamlx でクラックすることはできないようです!! :)へへへ。

もどかしい..

この分野の専門家はいますか?

4

2 に答える 2

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 回実行したことを誓いましたが、失敗しました..しかし...私も睡眠が必要です..

願わくば、これが同じジャムに参加している他の人たちの助けになることを願っています。

于 2011-03-29T14:18:39.300 に答える
2

あなたの質問に基づいて、WFワークフローをWCFサービスとして公開する必要があり、クライアントがWCFインフラストラクチャを介してWFを直接呼び出す必要があることを理解しています。

直面している問題は、ファクトリがWFワークフローを見つけてアクティブ化するために、クラスの完全修飾名を提供する必要があることです。VisualStudio内に一般的なWPプロジェクトがある場合、完全修飾名はプロジェクトの名前+クラス名です。これを試してください。

ワークフローxamlファイルをビルドすると、コンパイルにより、コードとロジックを保持するクラスが生成され、xaml(WPFおよびSilverlight)コンパイラの同じ動作に従って、クラスの名前はファイル(.xamlx)と同じになります。 )。

于 2011-03-29T13:42:43.680 に答える