Позвоните.Net сборке из Biztalk Orchestration: куда поставить конфиг?
Я получил внешнюю сборку.net, включая app.config, которую мне нужно вызвать из Biztalk Orchestration.
Я поместил некоторые записи в сборку.net и вижу, что он не читает или не может найти файл app.config, так как ConfigurationManager.AppSettings.Count равен 0
Я установил сборку.net в GAC, используя gacutil /i path.to.dll, и я не уверен, что происходит с app.config.
Любые идеи о том, как убедиться, что app.config читается, когда я вызываю его из оркестра Biztalk?
Благодарю.
2 ответа
BizTalk использует свой собственный файл конфигурации с именем btsntsvc.exe.config, который находится в каталоге программных файлов BizTalk. Вы можете добавить свои разделы конфигурации в этот файл и затем сбросить экземпляры хоста biztalk, чтобы получить изменения.
ОДНАКО, это не очень хорошая практика. Это нормально делать, когда у вас есть только один сервер приложений biztalk, но если вам необходимо внезапное масштабирование, у вас есть несколько файлов конфигурации для обслуживания.
Рекомендуемый подход заключается в использовании единого входа для хранения данных конфигурации конкретного приложения, поскольку это решение для хранения конфигурации BizTalk и, следовательно, всегда доступное. Я всегда использую этот метод и никогда не было проблем (хотя есть некоторые накладные расходы, связанные с разработкой и управлением).
Подробности о том, как это сделать, можно найти в блоге Ричарда Серотера.
Я на самом деле использую измененную версию здесь.
Я также использую задачу MSBuild для автоматизации развертывания новой конфигурации.
Редактировать: отправленный код для переноса SSOCLient и вызова значений конфигурации здесь
Вы также можете использовать индивидуальное решение. Создайте функцию во внешнем проекте, которая будет загружать файл конфигурации в виде XML-документа, и вы можете получить значение из файла конфигурации.
XmlDocument doc = new XmlDocument();
doc.Load(Config Path);
string value = doc.SelectSingleNode("/configuration/appSettings/add
[@key='key']/@value").Value;