У меня есть менеджер конфигурации для настройки веб-приложения перед использованием. В этот диспетчер конфигурации включена настройка строки подключения к базе данных. У меня есть рабочий код, который изменит строку подключения и сохранит, но я столкнулся с проблемой, которую я не могу исправить.
Строка подключения содержит символ «&», поэтому при сохранении строки в файле web.config строка меняется с «&» на «&
». Я пробовал несколько разных вариантов кода, чтобы обойти это, но ничего не работает.
Вот код для сохранения строки подключения:
System.Configuration.Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/");
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
section.ConnectionStrings["DALEntities"].ConnectionString = string.Format("metadata=res://*/DALModel.csdl|res://*/DALModel.ssdl|res://*/DALModel.msl;provider=System.Data.SqlClient;provider connection string="data source={0};initial catalog={3};persist security info=True;user id={1};password={2};multipleactiveresultsets=True;application name=EntityFramework"", settings.SQLserverName, settings.SQLuserName, settings.SQLpassword, settings.SQLdatabaseName);
config.Save();
Это работает для сохранения строки подключения, но это то, что сохраняется в файле web.config:
<add name="DALEntities" connectionString="metadata=res://*/DALModel.csdl|res://*/DALModel.ssdl|res://*/DALModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQL2012;initial catalog=tooling_041718;persist security info=True;user id=mm;password=mm;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />
Как видите, &
был добавлен в строку подключения в двух разных местах.
Я пытался экранировать символ '&', используя " + Regex.Escape("&") + "
вместо "&" в этих двух разных местах строки, и я пытался извлечь string.Format()
и у меня была просто простая строка.
Кто-нибудь знает, есть ли способ избежать изменения '&' при сохранении в web.config?