#asp.net-core
#asp.net-core
Вопрос:
С помощью Microsoft.Расширения.Пакет конфигурации, у меня есть следующая строка в моем файле Program.cs:
config.AddUserSecrets<Startup>(optional: false);
С заполненными секретами.присутствует файл json, эта строка работает так, как предполагается. В качестве альтернативы, я бы предположил, что отсутствуют секреты.файл json должен вызывать какое-либо исключение, поскольку я пометил его как необходимое; однако исключение не генерируется.
Следует ли этого ожидать? Моя конечная цель — дать разработчикам очевидный индикатор, если они извлекут проект из системы управления версиями и попытаются запустить его, не создав также соответствующий файл secrets.
Комментарии:
1. Хорошо, это действительно странно и потенциально может быть ошибкой в SDK. Я могу подтвердить, что он не выдает, хотя в документах говорится, что это должно быть. Если вы посмотрите на встроенную конфигурацию с помощью отладчика, вы действительно можете увидеть, что поставщик пользовательских секретов имеет Optional: true, даже если для него было установлено значение false :
2. AddJsonFile выдает ошибку, если вы установите для параметра optional значение false (или не учитываете его, поскольку значение optional по умолчанию равно false).
3. На самом деле это может быть здесь: github.com/dotnet/runtime/blob /. … Обратите внимание, что необязательный параметр никогда не используется в функции. Я рекомендую поднять проблему в репозитории dotnet / runtime и сослаться на этот вопрос.
4. Похоже, что он используется в строке 137 связанного кода. Это только проверка того, что проект включает идентификатор, который, как вы сказали, он имеет. Строка 192 показывает, что сам файл всегда считается необязательным.
5. Спасибо за все отзывы. Я предполагаю, что вопрос в следующем: должен ли сам файл считаться необязательным? Мое мнение было бы отрицательным, но я полагаю, что может быть основная причина, по которой он был реализован таким образом. Несмотря на это, я последовал приведенному выше предложению и опубликовал проблему на GitHub.