Я размещаю свое первое серверное приложение Blazor в Службе приложений Azure. В рамках этого в моих настройках приложения есть несколько записей, а также строка подключения к базе данных. Я знаю, что как только оно окажется в Azure, мне нужно будет установить параметры приложения через колонку «Конфигурация» на портале Azure, что я и сделал, и все работает. Однако, если я просмотрю файлы с помощью инструмента Kudo, я увижу там настройки приложения, а также настройки, которые я использовал для своей локальной разработки.
Затем я попробовал пару вещей, чтобы облегчить это. Сначала я попытался удалить настройки приложения из конвейера сборки. Я собирался это сделать, но когда я это сделал, я получил ошибку сервера 500 в Azure. Если добавить обратно настройки приложения, оно снова заработает. Затем я попытался добавить все свои настройки в файл appsettings.development.json, и мой конвейер удалил только этот файл, оставив в сборке пустые настройки приложения. Опять же, это вызвало ошибку сервера 500, пока я не вернул ее обратно. Что мне нужно сделать, чтобы мои настройки приложений не публиковались в Azure, или как мне скрыть свои значения, если мне нужно сохранить файл настроек приложений в сборке?
Примечание на случай, если это что-то изменит. Вот как я вызываю значение appsettings в своем коде.
Program.cs для строки подключения:
var connString = builder.Configuration["SqlConnection"];
Компоненты бритвы:
IConfiguration config (DI injdected)
_config = config;
_config["GroupName"]
Настройки приложений
{
"GroupName": "MyGroup",
"SqlConnection": "xxxxxxxxxxx",
"OIDC": {
"Authority": "xxxxxxx",
"ClientId": "IDName",
"ClientSecret": "",
"CallbackPath": "/Index"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
А также, пожалуйста, поделитесь скриншотом настроек приложения Azure.
Добавлен. Настройки приложения Azure меняются на те, которые я указал в колонке «Конфигурация», которые включают настройки Key Vault для строки подключения. Однако, если я воспользуюсь Kudo и посмотрю раздел «Просмотр каталога/сайта wwwroot», я увижу appsettings.json как часть этих файлов. Если я открою файл appsettings оттуда, я увижу те же настройки, которые использую локально, включая информацию о строке прямого подключения.
Вы можете использовать secrets.json для локальной разработки и просто сохранить файл appsettings.json со значениями-заполнителями, т. е. "SqlConnection": "Sql_Placeholder" ваш secrets.json будет иметь приоритет над файлами appsettings для локального разработчика, а appsettings будет перезаписан Azure.
Да... значения, заданные в конфигурации службы приложений, переопределяют значения файла appsettings.json.
Я использую Visual Studio. Это так же просто, как щелкнуть правой кнопкой мыши по вашему проекту и выбрать «Управление секретами пользователя». Переместите туда свои конфиденциальные данные в том же формате. Создайте новый профиль публикации, и он должен распознать, что вы используете секреты. Это также защитит ваши секреты от исходного репозитория.


Там я вижу настройки приложения, а также настройки, которые я использовал для локальной разработки.
Да, вы также можете увидеть значения локальной конфигурации.
Но поскольку вы установили значения конфигурации в параметрах приложения Azure, локальные значения appsettings.json будут переопределены значениями параметров приложения Azure.
Так что с местными ценностями проблем не будет.
Что мне нужно сделать, чтобы мои настройки приложения не публиковались в Azure?
Если вы не хотите публиковать файл appsettings.json в Azure, измените свойства файла, как показано ниже.
Build Action - None
Copy to Output Directory - Do not copy

.csproj.
<ItemGroup>
<Content Remove = "appsettings.json" />
</ItemGroup>
<ItemGroup>
<None Include = "appsettings.json">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</None>
</ItemGroup>
site\wwwroot не содержит файла конфигурации.


Тогда вывод будет

Спасибо @Brian Parker и RBee за комментарии.
Как упомянул Брайан Паркер, да, вы даже можете настроить секреты в файле secrets.json для работы локально.
Спасибо. Использование secrets.json работает, и я думаю, именно так мы и будем двигаться дальше. Мне не обязательно удалять файл appsettings, если он не содержит никаких реальных значений. Тем не менее, я проверил настройку свойств, чтобы не копировать настройки приложения, и это сработало. Мне пришлось вручную добавить настройки в файл .csproj, но как только я это сделал, все заработало, как вы сказали.
Не могли бы вы поделиться своим
appsettings.jsonфайлом.