C#-以编程方式更改Web应用程序中的web.config文件

时间:2018-09-19 18:55:27

标签: c# asp.net web-config

我试图创建一个程序来更改并将更改保存到web.config文件中。该程序将是第一次安装Web应用程序。我确实找到了更改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,就必须有一种方法可以在我使用Configuration类的同时访问和修改web.config。我可能是错的,但是使用appSettings和connectionStrings部分非常容易做到这一点。非常感谢您提供有关此问题的任何指导。同样,为了澄清起见,这是在第一次运行Web应用程序之前的一次Web应用程序设置。我试图能够配置在UI中放置的每个网站,而不必直接修改web.config。再次感谢。

0 个答案:

没有答案