Без подробной информации об ошибке, которую вы видите, трудно быть уверенным, но я вполне уверен, что ваша карта не работает, потому что все параметры в модуле BizTalk XSLT передаются в виде строк 1 .
Когда я пытаюсь запустить что-то вроде функции, которую вы предоставили как встроенный C #, я получаю следующую ошибку:
Объект типа «System.String» не может быть преобразован в тип «System.DateTime»
Замените свой встроенный C # на что-то вроде следующего:
public string ConvertDateTime(string param1)
{
DateTime inputDate = DateTime.Parse(param1);
return inputDate.ToString("yyyyMMdd");
}
Обратите внимание, что тип параметра теперь является строкой, и вы можете затем преобразовать его в DateTime и выполнить формат строки.
Как предлагали другие ответы, может быть, лучше поместить этот вспомогательный метод во внешний класс - таким образом, вы можете протестировать свой код для обработки крайних случаев, а также получить некоторое повторное использование.
1 Тот факт, что все параметры в BizTalk XSLT являются строками, может быть источником многих ошибок - еще один распространенный - математические вычисления. Если вы вернете числовые значения из своих скриптовых функций, BizTalk будет полезно конвертировать их в строки для сопоставления их с исходящей схемой, но не будет так услужливо выполнять какое-то очень случайное округление результирующих значений. Преобразование возвращаемых значений в строки самостоятельно в C # устранит этот риск и даст ожидаемые результаты.