Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

запись в файл из сервиса

9.4K
02 ноября 2007 года
vitalik_4
37 / / 12.11.2006
Подскажите пожалуйста в чем могут быть грабли. Пишу сервис для копирования данных из одной БД
в другую, необходимо вести лог работы (в текстовый файл), и сохранять текущий ID последней скопированой записи
(в xml-файл). Чтение из файлов происходит нормально, а вот при попытки записи выпадает исключение ACCESS DENIED.
Данные копируются порциями по 10 тыс. записей. т.е
1) прочитали из конфига ИД последней переписаной записи
2) выбрали 10 тыс. записей начиная с этого ИД
3) скинули в другую базу
4) определили ИД последней из этих 10 тыс.
5) записали этот ИД в файл

И вот как раз на пункте 5 грабли и возникают. Вот код который записывает в конфиг:

//XMLSECTION мое перечисление
protected void SetXMLData(XMLSECTION x, string value)
{
XmlDocument doc = new XmlDocument();
doc.Load(AppDomain.CurrentDomain.BaseDirectory + @"\db.xml");
XmlNodeList el;
switch (x)
{
case XMLSECTION.CurrentDataGpsID:
el = doc.GetElementsByTagName("CurrentDataGpsID");
el[0].InnerText = value;
break;
.......
}
doc.Save(AppDomain.CurrentDomain.BaseDirectory +@"\db.xml");
}

//запсь последнего ИД
SetXMLData(XMLSECTION.CurrentDataGpsID, maxDatagpsID);


И такой код тоже не пашет
StreamWriter sw = new StreamWriter(@"c:\service.txt");
sw.WriteLine(string.Format("{0} {1}",DateTime.Now,message));
sw.Close();

В чем прикол может быть ?
370
02 ноября 2007 года
koval
443 / / 29.08.2005
Цитата: vitalik_4

И такой код тоже не пашет
StreamWriter sw = new StreamWriter(@"c:\service.txt");
sw.WriteLine(string.Format("{0} {1}",DateTime.Now,message));
sw.Close();

В чем прикол может быть ?



Вместо этого порубуй:

 
Код:
FileStream fs = new FileStream("c:\\service.txt",FileMode.Append,FileAccess.Write);
StreamWriter streamWriter = new StreamWriter(fs);
streamWriter.Write(string.Format("{0} {1}",DateTime.Now,message));

streamWriter.Close();
fs.Close();


Этот код точно рабочий.
Не работает твой код потому что класс StreamWriter записывает поток, а не файл.

Скажи что не работает в первой части твоего кода(укажи строку в которой возникает эксепшн)
5
03 ноября 2007 года
hardcase
4.5K / / 09.08.2005
Поставь аакаунт сервиса LocalSystem - будет приоритет операционки и все благополучно запишется.
Также можно поставить NetworkService, но для каталога, куда происходит запись придется разрешить чтение/запись/создание (а лучше вообще поставить FullControl) пользователю NETWORK SERVICE.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог