Как преобразовать mailSettings в web.config, не имея учетных данных в управлении исходным кодом
У меня есть веб-приложение, которое я развертываю в службе приложений Azure, используя VSTS. До сих пор мне удавалось успешно использовать преобразования конфигурации и подстановки переменных, чтобы не иметь никакой конфиденциальной информации в управлении исходным кодом, но я не могу понять, как это сделать для учетных данных smtp в system.net/mailSettings/ SMTP / сети.
У кого-нибудь есть идеи?
1 ответ
ОК, немного покопавшись и расспросив, кажется, что используется WebDeploy и parameters.xml работает.
Вот что я сделал:
- Я добавил аддон Заменить токены в свою учетную запись VSTS.
Я добавил parameters.xml в свой проект веб-сайта, и он выглядит так:
<?xml version="1.0" encoding="utf-8"?> <parameters> <parameter name="Mail.Username" description="The username used for smtp authentication" defaultValue="#{Mail.UserName}#" tags=""> <parameterEntry kind="XmlFile" scope="obj\\Release\\Package\\PackageTmp\\Web\.config$" match="/configuration/system.net/mailSettings/smtp/network/@userName" /> </parameter> <parameter name="Mail.Password" description="The password used for smtp authentication" defaultValue="#{Mail.Password}#" tags=""> <parameterEntry kind="XmlFile" scope="obj\\Release\\Package\\PackageTmp\\Web\.config$" match="/configuration/system.net/mailSettings/smtp/network/@password" /> </parameter> </parameters>
Мой шаг сборки уже был настроен на вывод пакета, но это те параметры MSBuild, которые необходимы для шага сборки.
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation=”$(build.artifactstagingdirectory)\\”
если вы, как и я, выполняете преобразования конфигурации строк подключения, вы можете добавить/p:AutoParameterizationWebConfigConnectionStrings=false
к этому списку параметров, а также.В конфигурации выпуска перед этапом " Служба приложения " Развертывание в Azure "" добавьте шаг с помощью вышеупомянутого дополнения " Заменить токены". Я придерживался синтаксиса по умолчанию для значений замены, но их можно было изменить. Поскольку я использую все значения по умолчанию, я запускаю задачу в корневом каталоге
$(System.DefaultWorkingDirectory)/$(Build.DefinitionName)/drop
и целевые файлы*.SetParameters.xml
Затем на шаге " Служба приложения " Развертывание в Azure "" я выбрал опцию " Опубликовать с помощью Web Deploy" и для файла SetParameters, который я использовал
$(System.DefaultWorkingDirectory)/$(Build.DefinitionName)/drop/<Name of Web Project>.SetParameters.xml
В разделе " Действие после развертывания" установите для типа сценария развертывания значение " Встроенный сценарий" и добавьте следующий сценарий.
@echo off del parameters.xml
Это связано с тем, что файлы.config по умолчанию не обслуживаются, а файлы.xml и
parameters.xml
будет сидеть в вашем веб-корне без защиты, с вашим именем пользователя и паролем SMTP в виде простого текста.Затем добавьте переменные выпуска с именами Mail.Username и Mail.Password и заполните их значения. Я сделал Mail.Password секретом.
Проверьте все и запустите сборку и релиз!