ワークフロー ステップでカスタム ワークフロー アクティビティを実行可能にする別の方法はありますか。
いつもプラグイン登録ツールを使用して dll を登録し、サーバーを再起動します。その後、ワークフローでカスタム ワークフロー アクティビティを使用できるようになります。
IIS を再起動した後に試してみましたが、うまくいくことを願っています。
サーバーを常に再起動しても、解決策にはなりません。それに対する代替方法はありますか?提案してください。あなたの提案はすべて大歓迎です。
ワークフロー ステップでカスタム ワークフロー アクティビティを実行可能にする別の方法はありますか。
いつもプラグイン登録ツールを使用して dll を登録し、サーバーを再起動します。その後、ワークフローでカスタム ワークフロー アクティビティを使用できるようになります。
IIS を再起動した後に試してみましたが、うまくいくことを願っています。
サーバーを常に再起動しても、解決策にはなりません。それに対する代替方法はありますか?提案してください。あなたの提案はすべて大歓迎です。
1) IIS を再起動する必要はありません。次のコマンドを使用して、アプリケーション プールを再起動します (はるかに高速で、サーバー上で実行されている可能性のある他のアプリケーションを中断しません。既定では「CrmAppPool」)。
%systemroot%\system32\inetsrv\appcmd recycle apppool CrmAppPool
2) 同様に、(powershell) を実行して非同期プロセスをリサイクルできます。
Restart-Service -displayname "Microsoft Dynamics CRM Asynchronous Processing Service"
3) これらのコマンドは両方とも、powershell コマンドを使用してリモートで実行できます。
powershell Invoke-Command [CrmServerName] -ScriptBlock { ["Restart-Service...."] }
4) プラグインをデバッグするためにサーバーにデプロイする必要はありません。テストハーネスを作成する方がはるかに簡単/高速です。以下のリンクは、単体テスト用の開発環境をセットアップする方法の概要を示しています。
CRM は dll をキャッシュし、サービスを再起動すると、これらのキャッシュが更新されます。
同期プラグインを登録する場合は、IIS をリセットする必要があります。
非同期プラグインまたはカスタム ワークフロー アクティビティを登録する場合は、非同期サービスをリセットする必要があります。
ここでのポイントは非常に具体的です -
これは CRM だけでなく、IIS でホストされるすべての Web アプリケーションにも当てはまります。Web アプリ (CRM の場合) は、メッセージが実行されたときに初めて dll をキャッシュします (プラグイン メッセージ/イベント - これは .net プラットフォームによって内部的に行われるため、他の同様の呼び出しをより効率的に処理するためです)。したがって、その場合は、同期されたものを Web アプリからフラッシュする必要があります。そのため、アプリ プールをリサイクルする必要があります (SMART WAY -> 単一のアプリケーション フラッシュの場合、サーバー上の他のアプリケーションに影響を与えずに、IIS を再起動する代わりに常に APPPOOL リサイクルを使用する必要があります)。
このために、アプリケーションの AppPool をリサイクルし、VS のプロジェクト (プラグイン プロジェクト) のポスト ビルド イベントでそれをトリガーする powershell スクリプトを作成することをお勧めします。そのため、プロセスが自動化され、労力が大幅に削減されます。
カスタム WF アセンブリに関しては、Async で実行されるためです。サービスなので、キャッシュされたコンテンツもここから破棄する必要があります。
お役に立てれば!
IIS を再起動してから、非同期サービスを再起動してください。必要なのはこれだけです。
何も再起動する必要はありません。
行う必要があるのは、展開するたびに、更新するアセンブリのビルド番号をインクリメントすることです。
これにより、CRM は、キャッシュされたバージョンを使用するのではなく、更新されたバージョンをデータベースにロードすることを認識します。
再起動せずに CWA を表示したい場合は、プラグイン登録ツールでアクティビティを選択し、プロパティの下にある「保存」ボタンを押してください。