概要
送信パイプラインにマップされているファイルのファイル名を特定のファイル マスク形式に置き換えるカスタム送信ポート パイプライン コンポーネントがあります。パイプライン コードは、ReceivedFileName プロパティを受け取り、それに変換を適用します。このプロセスは 1 年以上機能していますが、新しいスキーマとマップ リソースをデプロイした後、パイプラインは機能しなくなりました。以下の警告とエラーのため、ファイルが作成されません。誰かが同様の経験をして、この問題についての洞察を与えてくれることを願っています.
注: パイプラインを使用しない場合、マップとスキーマは機能します (新旧)。マップとスキーマ アーティファクトの唯一の変更点は、2 つの TypedPolling スキーマ、2 つの FlatFile スキーマ、および 2 つのマップの追加です。
これは、SFTP アダプターを使用して得た警告とエラーです。
警告
アダプターは、URL「SFTP://xxx.xxx.xxx.xxx:22/ToPartner/sftp/%SourceFileName%」の送信ポート「SEND_FileFormat_BSFTP」へのメッセージの送信に失敗しました。この送信ポートに指定された再試行間隔の後に再送信されます。詳細:「メッセージの処理中に予期しないエラーが発生しました。例外に関連付けられたテキストは「[SftpTransmitterEndpoint] ファイルを送信できません。内部例外:
%SourceFileName% マクロは、 http://schemas.microsoft.com/BizTalk/2006/sftp-properties名前空間でのみ使用できます。. 送信ポート トランスポートのプロパティを変更すると、接続プールにまだ接続が残っている可能性があるため、ホストの再起動が必要になる場合があります".".
エラー
URI "SFTP://xxx.xxx.xxx.xxx:22/ToPartner/sftp/%SourceFileName%" の送信ポート "SEND_FileFormat_BSFTP" でアダプター "SFTP" に送信されたメッセージは中断されています。エラーの詳細: System.ArgumentException: ' http://schemas.microsoft.com/BizTalk/2003/file-properties#ReceivedFileName ' という名前のプロパティが存在しません。
サーバー スタック トレース: System.ServiceModel.Channels.MessageProperties.get_Item(文字列名)
で Microsoft.BizTalk.Adapter.Sftp.SftpOutputChannel.BuildFileName(メッセージ メッセージ) で Microsoft.BizTalk.Adapter.Sftp.SftpOutputChannel.Send(メッセージ メッセージ、 TimeSpan timeOut) System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink)返信シンク)[0] で例外が再スローされました: System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult 結果)
で System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult 結果) で System.ServiceModel.Channels.ServiceChannel.EndCall(String)アクション、オブジェクト [] 出力、IAsyncResult 結果) System.ServiceModel.Channels.ServiceChannel.EndSend (IAsyncResult 結果) で[1] で例外が再スローされました。 Channels.IOutputChannel.EndSend(IAsyncResult 結果) Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.SendCallback(IAsyncResult 結果) MessageId: {055A8864-AB06-4849-ADC3-A5CB93016106} インスタンス ID: {FF1E3802-89CD-466C -B68E-2CF4EC662DF4}
これは、Blogical SFTP アダプターを使用して得たエラーです。
メソッド: Blogical.Shared.Adapters.Sftp.SftpTransmitterEndpoint.ProcessMessage エラー: [SftpTransmitterEndpoint] ファイルを送信できません。内部例外: %SourceFileName% マクロは、 http://schemas.microsoft.com/BizTalk/2006/sftp-properties名前空間でのみ使用できます。. 送信ポート トランスポートのプロパティを変更すると、接続プールにまだ接続がある可能性があるため、ホストの再起動が必要になる場合があります。
------------------------------ 情報: タイプ: Blogical.Shared.Adapters.Sftp.SftpException ターゲット: Microsoft.BizTalk.Message .Interop.IBaseMessage ProcessMessageInternal(Microsoft.BizTalk.Message.Interop.IBaseMessage, Blogical.Shared.Adapters.Sftp.ISftp) メッセージ: [SftpTransmitterEndpoint] ファイルを送信できません。内部例外: %SourceFileName% マクロは、 http ://schemas.microsoft.com/BizTalk/2006/sftp-properties でのみ使用できます。名前空間。. Send Port Transport のプロパティを変更すると、接続プールにまだ接続が存在する可能性があるため、ホストの再起動が必要になる場合があります。 Sftp.SftpTransmitterEndpoint.ProcessMessage(IBaseMessage メッセージ)
------------------------------ タイプ: System.Exception ターゲット: System.String ReplaceMacros(Microsoft.BizTalk.Message.Interop. IBaseMessage, System.String) メッセージ: %SourceFileName% マクロは、http ://schemas.microsoft.com/BizTalk/2006/sftp-properties 名前空間でのみ使用できます。スタックトレース: Blogical.Shared.Adapters.Sftp.SftpTransmitProperties.ReplaceMacros(IBaseMessage メッセージ、文字列 uri) で Blogical.Shared.Adapters.Sftp.SftpTransmitterEndpoint.ProcessMessageInternal(IBaseMessage メッセージ、ISftp sftp)
私が試してみました:
- パイプライン、スキーマ、およびマップ アーティファクトの更新
- %MessageId%、%SourceFileName%、および *.dat を SFTP ファイル名の値として使用する
- 送信ポートの停止、ホスト インスタンスの再起動
- アプリ内のすべてを停止し、すべてのホスト インスタンスを再起動する
- アーティファクトの再ガッキング
- SFTP の代わりにファイル アダプターを使用する