1

以下のコードを使用して、.net クラス ライブラリから ESB 管理ポータルにダミーの障害メッセージを送信しようとしています。ESB ExceptionHandling Service によって提供される WCF サービスを既に使用し、そのクライアントを作成しました。

                ExceptionHandlingClient clientESB = new ExceptionHandlingClient();
                FaultMessage faultMsg = new FaultMessage();

                faultMsg.Header = new FaultMessageHeader();
                faultMsg.Header.Application = "Exception Handling Service Test";
                faultMsg.Header.Description = "Fault Message Header";
                faultMsg.Header.ErrorType = "Error Type";
                faultMsg.Header.FaultSeverity = 1;
                faultMsg.Header.FaultCode = "Fault Code";
                faultMsg.Header.FailureCategory = "Failure Category";
                faultMsg.Header.FaultDescription = "Fault Description";
                faultMsg.Header.FaultGenerator = "Fault Generator";
                faultMsg.Header.Scope = "Fault Message Scopte";
                faultMsg.Header.ServiceInstanceID = System.Guid.NewGuid().ToString();
                faultMsg.Header.ServiceName = "Exception Service";
                faultMsg.Header.MachineName = System.Environment.MachineName;
                faultMsg.Header.DateTime = System.DateTime.Now.ToString();
                faultMsg.Header.ControlBit = "1";
                faultMsg.Header.MessageID = System.Guid.NewGuid().ToString();
                faultMsg.Header.ActivityIdentity = "Activity Identity ";
                faultMsg.Header.NACK = false;
                 //Use the 'client' variable to call operations on the service.
                clientESB.Open();
                clientESB.SubmitFault(faultMsg);

上記のコードが実行されると、FaultMessage オブジェクトのプロパティが正常に設定されます。このリクエストが ALL.Exceptions 送信ポートに到達すると、以下のエラー メッセージが表示されて失敗します。

送信パイプラインの実行に失敗しました: "Microsoft.Practices.ESB.ExceptionHandling.Pipelines.ESBFaultProcessor, Microsoft.Practices.ESB.ExceptionHandling.Pipelines, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ソース: "ESB BAM Tracker" 送信ポート: "ALL.Exceptions" URI: "SQL://(local)/EsbExceptionDb/" 理由: 予期しないファイルの終わりが発生しました。次の要素は閉じられていません: ns0:FaultMessage。行 20、位置 12。

4

1 に答える 1

0

BizTalk オーケストレーションから例外メッセージを送信する場合は、Microsoft.Practices.ESB.ExceptionHandling.Schemas.Faults.FaultMessage 型の faultMsg を作成する Construct Shape で次の操作を実行できます。

faultMsg = Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.CreateFaultMessage();
faultMsg.FailureCategory = "Failure Category";
faultMsg.FaultCode = "Fault Code";
faultMsg.FaultSeverity = Microsoft.Practices.ESB.ExceptionHandling.FaultSeverity.Error;
faultMsg.FaultDescription = "Fault Description";
faultMsg.Scope = "Fault Message Scope";

ノート:

  1. アプリケーションやその他の設定は BizTalk に自動入力されるため、設定する必要はありません。
  2. Web サービスを使用する必要はありません。
    BizTalk プロジェクトで次のMicrosoft.Practices.ESB.Exception.Management
    Microsoft.Practices.ESB.ExceptionHandling
    Microsoft.Practices.ESB.ExceptionHandling.Schemas.Faultsへの参照が必要です。
于 2016-07-20T04:25:40.383 に答える