Я пытаюсь создать программу, которая изменяет и сохраняет изменения в файле web.config.Программа будет впервые настроена для веб-приложения.Я нашел способ изменить appSettings и connectionStrings, но что-то еще, и я потерпел неудачу.
Я хочу иметь возможность изменить режим аутентификации между «Windows» и «Forms».Файл web.config настраивается следующим образом:
<system.web>
<authentication mode="Windows">
<forms loginUrl="~/Default.aspx" timeout="120"/>
</authentication>
</system.web>
Кроме того, вы хотите изменить режим безопасности между «Транспорт» и «Нет».Файл web.config для этого раздела выглядит примерно так:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IAlarmNotifierCommunicationService" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None"/>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
Я попытался пойти тем же путем, что и я, для изменения appSettings и connectionStrings, но безрезультатно.Следующий код работает, чтобы изменить эти настройки:
System.Configuration.Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/");
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
if (section != null)
{
section.ConnectionStrings["CustomerDB"].ConnectionString = string.Format("Provider=SQLOLEDB.1;Data Source={0};User ID={1};PWD={2};Initial Catalog={3}", settings.SQLserverName, settings.SQLuserName, settings.SQLpassword, settings.SQLdatabaseName);
config.Save();
}
if (System.Configuration.ConfigurationManager.AppSettings.AllKeys.Contains("ApplicationUrl"))
{
config.AppSettings.Settings["ApplicationUrl"].Value = string.Format("{0}://{1}/{2}/", settings.IsHttpsEnabled ? "https" : "http", settings.IsProteusMMXHostedSite ? "customerSite.com" : "localhost", settings.ApplicationName);
config.Save();
}
Я попробовал следующее, и я получил ошибку для нулевой ссылки, когда я попытался это:
var security = config.GetSection("system.serviceModel/bindings") as System.ServiceModel.Configuration.BindingsSection;
if (security != null)
{
security.ElementInformation.Properties["mode"].Value = settings.IsHttpsEnabled ? "Transport" : "None";
config.Save();
}
Я потратилмного времени на это, и я расстраиваюсь, поэтому любая помощь будет высоко ценится.Спасибо.
[ОБНОВЛЕНИЕ] Я ищу что-то такое же простое, как и доступ к разделам appSettings и connectionStrings и их изменение.Я думаю, что я близок к последнему фрагменту кода в этом посте, где переменная - безопасность.Без преобразования файла web.config в XML должен быть способ доступа и изменения файла web.config, о котором я говорю, при использовании класса Configuration.Я могу ошибаться, но это очень легко сделать с помощью разделов appSettings и connectionStrings.Любое руководство по этому вопросу высоко ценится.Кроме того, просто чтобы уточнить, это однократная настройка веб-приложения перед его первым запуском.Я пытаюсь настроить каждый веб-сайт, размещенный в пользовательском интерфейсе, вместо непосредственного изменения файла web.config.Еще раз спасибо.