У нас есть устаревшее решение. NET, которое сочетает в себе элементы MVC и WebForms, а также некоторые проекты веб-API в виде приложений на веб-сайте root. Очевидно, что эти приложения веб-API унаследуют настройки веб-сайта web.config.
У нас также есть другой проект - ограниченный контекст - для аутентификации SSO, который находится в той же папке root и, следовательно, также наследует сеть веб-сайта. настройки конфигурации. Это приложение с ограниченным контекстом было создано с использованием. NET Core.
- wwwroot // .NET Framework
- API 1 // .NET Framework
- API 2 // .NET Framework
- ...
- SSO / authentication // bounded context, built in .NET Core
Недавно мы начали использовать Azure Key Vault для хранения наших секретов, а для локальной работы с этими секретами мы используем секреты. xml файл. Итак, web.config веб-сайта root выглядит так ...
<configSections>
<section name="configBuilders" ... />
</configSections>
<configBuilders>
<builders>
<add name="Secrets" optional="false" userSecretsFile="~\secrets.xml" [elided attributes] />
</builders>
</configBuilders>
<appSettings configBuilders="Secrets">
<add key="a_key" value="value specified in secrets.xml" />
...
</appSettings>
Вот проблема: проект с ограниченным контекстом Authentication выдает исключение, потому что не может найти сборка Microsoft.Configuration.ConfigurationBuilders.UserSecrets
- поскольку она наследует конфигурацию веб-сайта, ей необходимо знать, что это за раздел конфигурации.
Но если ссылка на этот пакет NuGet в. NET Core аутентификации project Я получаю сообщение ...
Этот пакет может быть не полностью совместим с вашим проектом.
... и он автоматически откатывается.
Итак, если я не могу сослаться на сборку UserSecrets
в подприложении. NET Core, то как я могу заставить его распознавать раздел <configBuilders>
в унаследованном файле конфигурации?
I Мы также пытались удалить элемент ...
<configSections>
<section name="configBuilders" />
</configSections>
... из конфигурационного файла root, но затем дополнительное приложение видит элемент <configBuilders>
и не распознает его.
Итак, проблема сводится к:
- The s ub-приложению требуется пакет NuGet, в котором определен элемент
<configBuilders>
.
Если нет ... - Подприложение видит
<configSections>
/ <section name="configBuilders" />
элемент и должен знать, где он определен.
Или я удаляю этот элемент <section name="configBuilders" />
во вспомогательном приложении, а затем ... - Подприложение видит
<configBuilders>
элемент и должен знать, какой раздел конфигурации определяет его.