Я не мог воспроизвести вашу точную проблему, но я приблизился. Я думаю, что в вашем наброске процесса есть некоторые подразумеваемые утверждения, которые были бы очень важны для нас, чтобы понять, что на самом деле происходит. В любом случае, я думаю, что ваши сообщения BizTalk не перезаписываются, но переменные XmlDocument имеют значение.
Я думаю, что вы, возможно, пострадали от одного из фундаментальных заблуждений разработчика, пришедшего из Java или VB6, когда он работает с C #.
C # - управляемый язык
Пожалуйста, помните, что C # - это управляемый язык, так как он использует сборщик мусора для восстановления неиспользуемых ссылок на объекты. Ключевое слово здесь Ссылка .
Когда вы пишете следующие строки:
xmlDoc2 = "<root><xml/></root>";
SecondMessage = xmlDoc2;
По сути, у вас есть две ссылки на один и тот же контент. А именно, две ссылки xmlDoc2 и SecondMessage , которые ссылаются на назначенную строку.
Таким образом, в зависимости от кода, который вы используете для «записи» содержимого XML ваших сообщений BizTalk, вы можете перезаписывать некоторые ссылки.
Кроме того, если это происходит в контексте формы Construct, вы можете непреднамеренно перезаписать содержимое самого сообщения BizTalk.
Решение?
Эта проблема обычно не проявляется при работе с BizTalk. Я лично никогда не сталкивался с этой проблемой.
Если вы обновите свой исходный вопрос точным кодом как для форм выражения, так и для формы назначения, я дополню этот ответ более подходящим руководством.