Добавлять значения в веб-конфигурацию динамически?Как + Лучший способ - PullRequest
4 голосов
/ 16 марта 2011

Я только что начал читать, писать и динамически добавлять значения в web.Config в asp.net.Имею в виду много идей, но я просто хочу знать, каков наилучший способ динамического добавления значений в веб-конфигурации.

например, в моем случае мне нужно добавить

 <identity  userName="someDomain\User" password="password" impersonate="true" />

в

тег в веб-конфигурации из кода позади.

в ожидании хороших ответов

Ответы [ 4 ]

5 голосов
/ 16 марта 2011

Я получил вас и код, который вы хотите:

 public void saveIdentity(string username, string password, bool impersonate)
    {
        Configuration objConfig = WebConfigurationManager.OpenWebConfiguration("~");
        IdentitySection identitySection = (IdentitySection)objConfig.GetSection("system.web/identity");
        if (identitySection != null)
        {
            identitySection.UserName = username;
            identitySection.Password = password;
            identitySection.Impersonate = impersonate;
        }
    objConfig.Save();
}
4 голосов
/ 16 марта 2011

Я бы порекомендовал вам не пытаться динамически обновлять web.config.При этом ваше приложение будет перезапущено, а срок действия вашего пользовательского сеанса истечет.

. В случае внесения следующих изменений ваше приложение всегда будет перезапущено

* web.config
* machine.config
* global.asax
* Anything in the bin directory or it's sub-directories

.САШ-приложения restarts.html

1 голос
/ 09 декабря 2013

Это в настольном приложении, но мы можем использовать его в веб-приложении

if (Convert.ToInt32(txtPortNumber.Text.Trim()) <= 65535)
{

    System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

    System.Net.Configuration.MailSettingsSectionGroup mailSection = config.GetSectionGroup("system.net/mailSettings") as System.Net.Configuration.MailSettingsSectionGroup;

    mailSection.Smtp.From = txtFrom.Text.Trim();
    mailSection.Smtp.Network.Host = txtFrom.Text.Trim();
    mailSection.Smtp.Network.UserName = txtFrom.Text.Trim();
    mailSection.Smtp.Network.Password = txtPassword.Text.Trim();
    mailSection.Smtp.Network.EnableSsl = chkEnableSSL.Checked;
    mailSection.Smtp.Network.Port = Convert.ToInt32(txtPortNumber.Text.Trim());
    config.Save(ConfigurationSaveMode.Modified);
    MessageBox.Show("Your mail setting has been saved successfully.");
    Application.Restart();
}
else
{
    MessageBox.Show("Port number is not valid, please enter port number between the 0 to 65535.");
}
1 голос
/ 16 марта 2011

Почему вы пытаетесь установить идентичность в коде?Обычно это то, что нужно настроить, когда приложение развернуто, а затем оставлено в покое.Если вы можете объяснить, что вы пытаетесь выполнить, мы, вероятно, предложим лучший способ сделать это.

Кроме того, знаете ли вы, что изменение веб-конфигурации приведет к перезагрузке приложения?Все кэширование на стороне сервера будет сброшено, пользовательские сессии будут завершены и т. Д. Если инструмент для изменения веб-конфигурации из кода существует, это еще не значит, что это хорошая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...