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

Обзор

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

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

Вот предупреждение и ошибка, которые я получил при использовании адаптера 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#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) в System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage (IM сообщение, IMessageSink replySink)

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

Исключение повторно генерируется в [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-A5CB930Ed -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 (сообщение IBaseMessage, ISftp sftp)

Я пытался:

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

person Emeria    schedule 06.10.2015    source источник
comment
Когда ваше сообщение приостановлено с ошибкой из вашего порта отправки sftp. Вы подтвердили, что свойство ReceivedFileName существует в контексте вашего сообщения и его пространство имен 'schemas.microsoft .com / BizTalk / 2003 / свойства-файла '   -  person Zee    schedule 07.10.2015
comment
Не существует. Конвейер вставит эти свойства в контекст сообщения в конвейере SEND порта отправки. В прошлом конвейер отправки заменял бы% SourceFileName% нашим преобразованным ReceivedFileName.   -  person Emeria    schedule 07.10.2015
comment
На основе вашего описания. Код конвейера принимает свойство ReceivedFileName и применяет к нему преобразование. . Свойство ReceivedFileName должно существовать в контексте сообщения независимо от того, был ли выполнен ваш компонент конвейера отправки или нет. Думаю, теперь вам нужно проверить, почему это свойство отсутствует в вашем сообщении,   -  person Zee    schedule 07.10.2015


Ответы (1)


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

person Emeria    schedule 12.10.2015
comment
Да, использование разных версий DLL, развернутых в BizTalk и GAC, вызовет некоторые странные ошибки. Всегда импортируйте его в BizTalk и устанавливайте в GAC. - person Dijkgraaf; 12.10.2015