Я работаю над веб-сервисом с Visual Studio, framework 4.7.1. Один из его веб-методов должен вызывать другой веб-сервис (предоставленный другой компанией). Он преобразует полученные параметры (которые соответствуют бизнес-логике нашего основного приложения) в значения, которые может обрабатывать другой веб-сервис (в соответствии с его собственной бизнес-логикой). Для этого он в значительной степени опирается на данные, хранящиеся в файле Web.config.
Я протестировал его напрямую (запустил веб-сервис и вызвал веб-методы с автоматически сгенерированными страницами на странице веб-браузера), и все заработало нормально.
Теперь мне нужно создать тестовое приложение (также в Visual Studio, framework 4.7.1) для вызова тех же веб-методов. При первом тестировании я заметил, что веб-служба пытается получить доступ к конфигурационному файлу тестового приложения, а не к собственному (как описано в Не удается прочитать Web.config с ConfigurationManager.AppSettings ).
Итак, я создал раздел applicationSettings в Web.config и перенес в него все данные из appSettings. Работало нормально.
Теперь, однако, я заметил, что то же самое происходит с пользовательскими разделами. Один из них выглядит так:
<configSections>
<section name="jobTypeLists" type="AdelSoft_WS_FRA.JobTypesSection" />
</configSections>
<jobTypeLists>
<jobTypes>
<jobType codeCustomerType="A" codeJobType="JobForA" />
<jobType codeCustomerType="B" codeJobType="JobForB" />
</jobTypes>
</jobTypeLists>
Я вижу, как такая структура может вписаться в собственный файл .settings, но у меня есть другая, которая намного сложнее. (Например, текстовые узлы могут иметь до четырех предков.) Для краткости я не предоставляю его сейчас, но его можно легко упорядочить.
ConfigurationManager.GetSection("jobTypeLists")
возвращает ноль при вызове из тестового приложения. То же самое с WebConfigurationManager.GetSection("jobTypeLists")
.
Я также пытался получить доступ к файлу конфигурации с помощью ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
, но я не могу найти свои разделы в объекте конфигурации, который он возвращает.
Я не уверен, что это что-то значит, но свойство FilePath
объекта Configuration содержит "C: \ Folder \ InnerFolder \ WebServiceFolder \ web.config.config". Почему этот второй ".config"? Я попытался передать ту же строку в ConfigurationManager.OpenExeConfiguration (), без расширения ".config": он возвратил ноль. (Как и должно быть, я чувствую.)
Объект конфигурации имеет 10 групп разделов и 22 раздела, из которых я не могу сделать ни головы, ни хвосты. Также я могу перечислить их.