Макрос%SourceFileName% можно использовать только с пространством имен http://schemas.microsoft.com/BizTalk/2006/sftp-properties

обзор

У меня есть пользовательский компонент конвейера порта отправки, который заменяет имя файла, отображаемого в конвейере отправки, определенным форматом маски файла. Код конвейера принимает свойство ReceivedFileName и применяет к нему преобразование. Этот процесс работал более года, но после развертывания новой схемы и ресурса карт конвейер перестал работать. Теперь я не получаю файл, созданный из-за приведенных ниже предупреждений и ошибок. Я надеюсь, что кто-то, возможно, имел подобный опыт и мог бы дать мне понимание этой проблемы.

Примечания: Карты и схемы работают (новые и старые), когда не используется конвейер. Единственным изменением карт и артефактов схемы было добавление 2 схем TypedPolling, 2 схем FlatFile и 2 карт.

Вот предупреждение и ошибка, которую я получил с помощью адаптера SFTP

Предупреждение

Адаптеру не удалось передать сообщение, отправляемое на порт "SEND_FileFormat_BSFTP" с URL-адресом "SFTP://xxx.xxx.xxx.xxx:22/ToPartner/sftp/%SourceFileName%". Он будет повторно передан после интервала повторения, указанного для этого порта отправки. Подробности:"При обработке сообщения произошла непредвиденная ошибка. Текст, связанный с исключением:"[SftpTransmitterEndpoint] Невозможно передать файл. Внутреннее исключение:

Макрос% SourceFileName% можно использовать только с пространством имен http://schemas.microsoft.com/BizTalk/2006/sftp-properties., Изменение любых свойств порта отправки может потребовать перезапуска хоста, так как пул соединений все еще может иметь соединения "."

ошибка

Сообщение, отправленное адаптеру "SFTP" на порт отправки "SEND_FileFormat_BSFTP" с URI "SFTP://xxx.xxx.xxx.xxx:22/ToPartner/sftp/%SourceFileName%", приостановлено. Сведения об ошибке: System.ArgumentException: свойство с именем " http://schemas.microsoft.com/BizTalk/2003/file-properties" отсутствует.

Трассировка стека сервера: в System.ServiceModel.Channels.MessageProperties.get_Item(имя строки)
в Microsoft.BizTalk.Adapter.Sftp.SftpOutputChannel.BuildFileName(сообщение с сообщением) в Microsoft.BizTalk.Adapter.Sftp.SftpOutputChannel.Send(сообщение с сообщением, TimeSpan timeOut) в System.Runtime.Remoting.Messaging.Stacess_Pid (SMTP), Object[] args, Object server, Object[]& outArgs) в System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)

Возникло исключение в [0]: в System.Runtime.AsyncResult.End[TAsyncResult](результат IAsyncResult)
в System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(результат SendAsyncResult) в System.ServiceModel.Channels.ServiceChannel.EndCall(действие String, выход Object [], результат IAsyncResult) в System.SernelCendSendSendSendSendEndSecEndSendSendSendSendSendSendSendSendSendSendSendSendSendC е результат)

Исключение, переброшенное в [1]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, тип службы. Int32) Channels.IOutputChannel.EndSend(результат IAsyncResult) в Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.SendCallback(результат IAsyncResult) MessageId: {055A8864-AB06-4849-ADC3-A5CB1S6F6806016106F6016106F6016106F6106106F6105 -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., Изменение любых свойств порта отправки может потребовать перезапуска хоста, так как пул соединений все еще может иметь соединения Stacktrace: в Blogical.Shared.Adapters.Sftp.SftpTransmitterEndpoint.ProcessMessageInternal(сообщение IBaseMessage, ISftp sftp) в Blogical.Shared.Adapters.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. Stacktrace: в Blogical.Shared.Adapters.Sftp.SftpTransmitProperties.ReplaceMacros(сообщение IBaseMessage, String uri) в Blogical.Shared.Adapters.Sftp.SftpTransmitterEndpoint.ProcessMessageInternal(сообщение IBaseMessftp, ISftp ss)

Я пытался:

  • Обновление артефактов конвейера, схемы и карты
  • Использование%MessageId%, %SourceFileName% и *.dat в качестве значений моего имени файла SFTP
  • Остановка портов отправки, перезапуск экземпляров хоста
  • Остановка всего в приложении и перезапуск всех экземпляров хоста
  • Пересматривая артефакты
  • Использование файлового адаптера вместо SFTP

1 ответ

Решение

Это было решено путем полного повторного развертывания трубопроводных сборок. Библиотеки DLL вышли из синхронизации, как они были опубликованы. Версии GAC не совпадают с версиями, развернутыми в BizTalk.

Другие вопросы по тегам