2016-08-03 4 views
0

Проблема:Web.config: чувствительные настройки

Я хотел бы запустить мой сайт ASP.NET MVC локально с помощью IIS, используя мой секрет клиента Facebook. Я также хотел бы сохранить секрет клиента Facebook вне контроля источника. Я публикую все это для Azure, поэтому нет проблем, когда я запускаю свой веб-сервер в Облаке. Чувствительные настройки идут прямо в службу приложений и никогда не видят контроль источника.

В принципе, хранить секрет клиента вне контроля источника легко. Я могу только добавить источник конфигурации в настройки приложения в Web.config:

<appSettings configSource="facebookClientSecret.config" /> 

и все мои настройки могут войти в facebookClientSecret.config, который добавляется к .gitignore.

В этом заключается проблема: все мои настройки. Я не хочу скрывать все настройки от источника управления: только чувствительные.

Я попытался сделать это:

<appSettings> <add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> <add configSource="facebookAppSecret.config" /> <add key="StorageConnectionString" value="UseDevelopmentStorage=true" /> </appSettings>

Но, очевидно, что это "не допускается". Есть ли способ иметь подмножество параметров приложения, полученных из отдельного файла?

ответ

2

Атрибут file на appSettings подходит для счета красиво.

<appSettings file="facebookAppSecret.config"> 
    <add key="webpages:Version" value="3.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />  
    <add key="StorageConnectionString" value="UseDevelopmentStorage=true" /> 
</appSettings> 

Настройки будут выведены из facebookAppSecret.config файла, а также <appSettings></appSettings> записи.

Стоит отметить также, что содержимое этого файла должно содержать только <appSettings></appSettings> блок (т.е. он должен не содержать <?xml version="1.0" encoding="utf-8" ?><configuration>...</configuration>

Вам нужно будет настроить Build Action (должно быть «Content») и Копировать в выходной каталог параметры проекта для файла (щелкните правой кнопкой мыши по файлу в Visual Studio -> Свойства), поэтому файл будет включен в выходной каталог при его создании.

+0

Позвольте мне сказать, что это работает. Я отмечу это как ответ - спасибо. –

+0

Работает отлично. Единственное, что нужно добавить, это то, что необходимо пометить внешний файл «Copy Always» или «Copy if newer». Это сбило меня с толку в первый раз, когда я попробовал это. –

+0

Хорошая точка - вам по крайней мере нужно, чтобы отладка F5 работала правильно. Я расскажу об этом подробнее. –

Смежные вопросы