1

私は AppFabric / Persistence と .net 4.0 を使用する WCF ワークフローを持っていますが、操作ができないときに戻り値として SoapExceptions をスローすることがある外部ソープ サービスと通信するため、コード アクティビティにいくつかのバグがあることがわかっています。完了します。それは避けられず、最初からすべてを処理するための例外が非常に多くあります。

開発中にこれらのエラーが発生すると、私のワークフローは中断されますが、エラーをかなり簡単に追跡して、新たに見つかった SOAP 例外のハンドラーをコーディングできます。問題は、コードアクティビティに変更を加えて新しい dll を発行した後、中断されたワークフローの「再開」がこれらの変更を利用せず、再開時にコードを中断できないことです。

ワークフローは 5 回実行を試行し、同じエラーを再スローします。たとえそれが新しい例外をスローするようなものであっても ("TEST EXCEPTION")、それをコードから削除しました。

ワークフローの定義を変更するのではなく、コード アクティビティに小さな変更を加えるだけです。

私はVS2010でこれを行うことができると誓っていますが、vs2012に切り替えてから長い時間が経ちました. 参考までに、中断されていない新しいワークフローをデバッグできます。コードをステップ実行できます。再開時にデバッグすることはできません。

4

2 に答える 2

0

C:\Windows\Microsoft.NET\Framework\v4.0.30319\SQL\en\SqlWorkflowInstanceStoreSchemaUpgrade.sql を使用してスキーマをアップグレードし、.net 4.5 に変更することで、再開してデバッグできます。

これは最も洗練されたソリューションではないかもしれませんが、機能します。

また、特に検索した後は、このようなソリューションが個人的に嫌いだと述べたいと思います。ここに来て 4.5 をデプロイできない場合は、お詫び申し上げます。

于 2013-04-23T17:24:26.290 に答える
0

あなたができたかどうかは疑問です-VS2008での経験からこれを覚えています。

なぜこれが起こるのか正確には覚えていませんが、できないと思います。新しいコードを公開し、完成した (そして永続化された) ワークフローがなかったときに、本番環境で何をしたか - 新しいコードを指すアセンブリ バインディングを構成に追加しました。古いコードも存在していました。

このようなもの:

   <configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="myAssembly"
                              publicKeyToken="32ab4ba45e0a69a1"
                              culture="neutral" />
            <bindingRedirect oldVersion="1.0.0.0"
                             newVersion="2.0.0.0"/>
            <codeBase version="2.0.0.0"
                      href="http://www.litwareinc.com/myAssembly.dll"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

これも役に立ちます。

于 2013-03-28T20:59:04.580 に答える