1

Мы развертываем приложение ASP.Net для IIS через API MSDeploy. Мы хотим обновить существующие веб-сайты. В нашем ... pubxml мы определили следующие:Как заставить MSDeploy API поддерживать существующую ConnectionString?

<ItemGroup> 
    <MSDeployParameterValue Include="$(DeployParameterPrefix)ConnectionstringA-Web.config Connection String"> 
    <UpdateDestWebConfig>False</UpdateDestWebConfig> 
    </MSDeployParameterValue> 
    <MSDeployParameterValue Include="$(DeployParameterPrefix)ConnectionstringB-Web.config Connection String"> 
    <UpdateDestWebConfig>False</UpdateDestWebConfig> 
    </MSDeployParameterValue> 
</ItemGroup> 

По умолчанию setParameters.xml создан на публикацию, выглядит следующим образом:

<setParameter name="ConnectionstringA-Web.config Connection String" value="metadata=res://*/itrDTO.csdl|res://*/itrDTO.ssdl|res://*/itrDTO.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=devServer;initial catalog=devDB;User Id=devUser;Password=devPW;MultipleActiveResultSets=True;App=EntityFramework&quot;" /> 
    <setParameter name="ConnectionstringB-Web.config Connection String" value="data source=devServer;initial catalog=devDB;integrated security=True" /> 

Я также пытался создать «Projectname.wpp .targets»с этой конфигурацией внутри моего проекта:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> 
    <PropertyGroup> 
    <AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings> 
    </PropertyGroup> 
</Project> 

результатом является то, что ConnectionStrings не создаются внутри setparameters.xml.

Однако все комбинации конфигураций здесь меняют соединительные строки внутри web.config на сервере-получателе. Это происходит, если мы импортируем пакет с помощью IIS-ManagementUI И при развертывании пакета с помощью MSDeploy API.

Все примеры, которые я нашел для «параметризации» - тема для процесса управления IIS. Поскольку я понимаю параметризацию, это полезно только для ручной установки обновлений, так что у администратора есть пользовательский интерфейс для настройки материала. Но у нас нет интерфейса, когда мы обновляем системы наших клиентов.

Обновление: Когда я публикую с Visual Studio, вот смешной результат: «Эй! WebDeploy, держите руки подальше от строк подключения» enter image description here Я думаю, что это означает,

Когда я просмотреть изменения, это результат: enter image description here

ответ

1

параметризация полезна как через IIS установить интерфейс и через командную строку. Мы используем WebDeploy/Parameterization для развертывания всех наших 40 приложений.

Я только что проверил тест с новым пустым приложением ASP.NET и обнаружил, что по умолчанию ConnectionString параметризуется, но после установки свойства AutoParameterizationWebConfigConnectionStrings MSBUILD для false он не параметризует ConnectionString. Запись параметра была удалена из файлов parameters.xml и SetParameters.

Я предлагаю вам очистить папку целевого сайта и опубликовать ее с помощью этого набора свойств.

Также проверьте, что у вас нет конфигурационных преобразований или что-то еще, что может изменить конфигурацию.

+0

Я удалил веб-сайт на IIS и переделал веб-сайт. Когда я обновляю сайт, мои строки подключения меняются обратно на значения моего проекта - web.config. У моего setParameters.xml и parameters.xml нет записей для connectionstrings. Где расположены config.transforms? Файлы web.debug.config и web.release.config по-прежнему по умолчанию. – Weissvonnix

+0

Config transforms - это веб-файлы. [Env] .config. – chief7

+0

yep, они пусты или содержат данные по умолчанию – Weissvonnix