c # редактировать и обновлять файл web.config со страницы ASPX - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть два ключа в моем web.config, которые мне нужно сделать доступными для редактирования на странице ASPX, эти ключи ..

<add key="atlasuser" value="username" />
<add key="atlaspass" value="password" />

Я написал это в коде для моей страницы ASPX

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
string u_user = txtUsername.Text;
string u_pass = txtPassword.Text;

string crmSID = Request.QueryString["SID"];

config.AppSettings.Settings["atlasuser"].Value = u_user;
config.AppSettings.Settings["atlaspass"].Value = u_pass;

config.Save(ConfigurationSaveMode.Full);

Когда я редактирую поля и нажимаю "Сохранить", я получаю сообщение об ошибке разбора, в котором говорится, что доступ к файлу .tmp запрещен, и в поле ошибки источника отсутствуют соответствующие строки источника.

Я использую Windows 7 и проверил, что NETWORK SERVICE имеет полные права на чтение и запись в каталог.

Кто-нибудь может мне помочь?

Ответы [ 4 ]

0 голосов
/ 30 августа 2013

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

void editWebConfig(string key, string newValue, string filePath)
{
    var xml = new XmlDocument();
    xml.Load(filePath);
    using(FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite))
    {
        xml.SelectSingleNode("//configuration/appSettings/add[@key = '" + key + "']").Attributes["value"].Value = newValue;
        xml.Save(fs);
    }
}

Тогда вы просто позвоните

editWebConfig("atlasuser", txtUsername.Text, Server.MapPath(".") + "\\web.config");
0 голосов
/ 13 сентября 2011

Проверить, что файл конфигурации не установлен только для чтения?

PS - возможно, что-то не так с вашим дизайном, если вы храните временную информацию в веб-конфигурации.

0 голосов
/ 13 сентября 2011

web.config нельзя редактировать из приложения ASP.NET.

в теории .NET Framework предоставляет API-интерфейс для редактирования / сохранения изменений в файлах конфигурации приложения (для приложений ASP.NET это web.config), но на практике в IIS это не работает, поскольку каждый раз при изменении файла web.config приложение IIS перезапускается, поэтому .NET не позволяет сохранять данные, чтобы предотвратить это.

если вам действительно нужно разрешить изменения конфигурации на страницах ASPX, вы должны либо сохранить их в базе данных, либо в других внешних XML-файлах, а затем прочитать эти настройки при необходимости.

0 голосов
/ 13 сентября 2011

Кажется, что в этой статье MSDN вы захотите определить пустую строку, чтобы открыть элемент конфигурации по умолчанию.

http://msdn.microsoft.com/en-us/library/ms151456.aspx

Если вы сделаете:

Configuration config = WebConfigurationManager.OpenWebConfiguration(null);

Это должно позволить вам открыть конфигурацию для чтения / записи, но, как говорили другие, это нелучшее место для хранения этого типа информации

...