Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> windows service, работа с файлами 
:(
    Опции темы
4ybaka
Дата 5.7.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



написал простой сервис для теста:
Код

        protected override void OnStart(string[] args) {
            StreamWriter writer = new StreamWriter("C:\\file.txt");
            writer.WriteLine("ggg");
            writer.Close();
        }

остальное оставил без изменений.однако после запуска службы файл не создается.сервис вроде нормально стартует(и сразу остнаваливается,т.к. делать ему нечегоsmile).вопрос - почему нет файла?


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
jonie
Дата 5.7.2008, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



вот прямо сгенерированный (без добавки инсталлера) хрен установится в систему....
ну да будем считать что все добавил 8)

Цитата

сервис вроде нормально стартует(и сразу остнаваливается,т.к. делать ему нечего)
с чего бы... вот с этого и начнем разбираться.
напишем код такой :
Код

                Debugger.Launch(); //!!!
                Debugger.Break();
                StreamWriter writer = new StreamWriter("C:\\file.txt");
                writer.WriteLine("ggg");
                writer.Close();

запустим дебаггер и обнаружим, что сервис-то падает на AccessDenied
с какой учетки запускаете сервис-то?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
4ybaka
Дата 5.7.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



сервис ставится как LocalService.устанавливаю под админом.


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
jonie
Дата 5.7.2008, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



вы лучше код запустите что я привел.
LocalService по умолчанию доступа к FS не имеет.
короче права дай юзеру LocalService (RW) на каталог куда пишешь или запускай под другой учеткой, имеющей права.

Это сообщение отредактировал(а) jonie - 5.7.2008, 21:13


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Idsa
Дата 5.7.2008, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Немного офтоп.
Есть ли какие-то тонкости с установкой сервиса через installutil. Пробовал и в XP, и в Vista, эффект один и тот же: пишет, что все ок, но в списке сервисов сервис не появляется.

Это сообщение отредактировал(а) Idsa - 5.7.2008, 21:24


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
jonie
Дата 5.7.2008, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



а точно пишет-то? ты добавлял инсталлятора класс ? логи в студию кароче)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Bogdan1024
Дата 5.7.2008, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 5
Всего: 13



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

Добавлено через 39 секунд
Ещё попробуй настроить в панель управления->администрирование->.NET FW Configuration доступ к файлу...


--------------------
user posted image
PM MAIL   Вверх
jonie
Дата 5.7.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Bogdan1024 почитай что я писал выше и не надо гипотез. инсталятору вообще пофиг на разрешения. даете права на запись и все ок будет.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Idsa
Дата 6.7.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(jonie @  6.7.2008,  02:16 Найти цитируемый пост)
а точно пишет-то? ты добавлял инсталлятора класс ? логи в студию кароче) 

Я решил ручками через installutil добавить. Вот что пишет:
Цитата

Выполняется групповая операция установки.

Начинается этап установки процедуры установки.
См. файл журнала выполнения операция для сборки D:\TestWebApplication\WindowsSer
vice1\WindowsService1\bin\Debug\WindowsService1.exe.
Данный файл находится в D:\TestWebApplication\WindowsService1\WindowsService1\bi
n\Debug\WindowsService1.InstallLog.
Выполняется установка сборки 'D:\TestWebApplication\WindowsService1\WindowsServi
ce1\bin\Debug\WindowsService1.exe'.
Затронуты следующие параметры:
   logtoconsole =
   assemblypath = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debu
g\WindowsService1.exe
   logfile = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\Win
dowsService1.InstallLog
Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes в сб
орке D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\WindowsServ
ice1.exe.

Этап установки успешно выполнен, начинается этап фиксации.
См. файл журнала выполнения операция для сборки D:\TestWebApplication\WindowsSer
vice1\WindowsService1\bin\Debug\WindowsService1.exe.
Данный файл находится в D:\TestWebApplication\WindowsService1\WindowsService1\bi
n\Debug\WindowsService1.InstallLog.
Выполняется фиксация сборки 'D:\TestWebApplication\WindowsService1\WindowsServic
e1\bin\Debug\WindowsService1.exe'.
Затронуты следующие параметры:
   logtoconsole =
   assemblypath = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debu
g\WindowsService1.exe
   logfile = D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\Win
dowsService1.InstallLog
Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes в сб
орке D:\TestWebApplication\WindowsService1\WindowsService1\bin\Debug\WindowsServ
ice1.exe.
Удалите файл InstallState, поскольку отсутствуют программы установки.

Этап фиксации выполнен успешно.

Групповая операция установки выполнена.



--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
4ybaka
Дата 6.7.2008, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



jonie, ты прав,нет правsmile 
тогда еще вопрос(пока модераторы спятsmile).хочу вести логи.и проверяю,есть ли уже:
Код

            if(!System.Diagnostics.EventLog.Exists("SCServiceLogSource"))
                System.Diagnostics.EventLog.CreateEventSource("SCServiceLogSource", "SCServiceLog");

так вот когда доходит дело до второй строки - выкидывает эксепшн,мол такой(SCServiceLogSource) уже есть  smile ...


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
jonie
Дата 6.7.2008, 12:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата

Отсутствуют общие программы установки с атрибутом RunInstallerAttribute.Yes

Idsa ну он и пишет даже по-русски, что у тебя нету инсталятора класса.
в двух словах тыкаешь дважды на Service1.cs (от откроет редактор). тыкаешь правой на основном окне (НЕ окне просмотра решения), там есть Add Installer в меню. Мастер создает еще один класс инсталятора, и связывает его с твоим сервисом.

4ybaka не юзаю стандартную писалку в логи. так что хз. попробуй для начала делать тоже не из сервиса)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Idsa
Дата 6.7.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



jonie, получилось. Спасибо smile Первый раз с Windows Service работал. +1.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
CL0NE
Дата 1.12.2009, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.9.2009

Репутация: нет
Всего: нет



 Поставил сервис, все работает и использует свой журнал событий, как и выше приведенном коде:
Код

if(!System.Diagnostics.EventLog.Exists("SCServiceLogSource"))
                System.Diagnostics.EventLog.CreateEventSource("SCServiceLogSource", "SCServiceLog");


Но пришлось переделывать код и в результате нужно было удалять службу, результат:
Цитата

C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService>InstallUtil.exe /u TestService.exe
Microsoft ® .NET Framework Installation utility Version 2.0.50727.3053
Copyright © Microsoft Corporation.  All rights reserved.



Начинается установка.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe.
Данный файл находится в C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.InstallLog.
Выполняется удаление сборки 'C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe'.
Затронуты следующие параметры:
   logtoconsole =
   assemblypath = C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.exe
   logfile = C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\TestService\TestService.InstallLog
Выполняется удаление источника EventLog Test Service [Server].
При выполнении программы установки System.Diagnostics.EventLogInstaller во время
 установки возникло исключение.
System.InvalidOperationException: Источник 'Test Service [Server]' журнала собы
тий не может быть удален, поскольку совпадает с именем самого журнала.
При удалении из системы возникло исключение. Это исключение будет проигнорирован
о, и удаление из системы будет продолжено. Однако после завершения удаления данн
ое приложение может оказаться не полностью удаленным.

Удаление из системы выполнено.
При удалении из системы возникло исключение. Это исключение будет проигнорирован
о, и удаление из системы будет продолжено. Однако после завершения удаления данн
ое приложение может оказаться не полностью удаленным.

Погуглил, прочитал совет, что нужно удалять в реестре ключи/ветку, которая отвечает за сервис. Нет такой ветки в HKLM/SYSTEM/CurrentControlSet/<Service name>, а ветка, которая принадлежит службе журнала событий после удаления и повтора процедуры InstallUtil.exe /u ... снова появляется. Как исправить данную ошибку?

После перезагрузки и попытки заинсталить службу:
Цитата

C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Pr
ojects\Test>InstallUtil.exe Test.exe
Microsoft ® .NET Framework Installation utility Version 2.0.50727.3053
Copyright © Microsoft Corporation.  All rights reserved.


Выполняется групповая операция установки.

Начинается этап установки процедуры установки.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\Test\Test
.exe.
Данный файл находится в C:\Documents and Settings\User\Мои докумен
ты\Visual Studio 2008\Projects\Test\Test.InstallLog.
Выполняется установка сборки 'C:\Documents and Settings\User\Мои д
окументы\Visual Studio 2008\Projects\Test\Test.exe'.
Затронуты следующие параметры:
   logtoconsole =
   assemblypath = C:\Documents and Settings\User\Мои документы\Vis
ual Studio 2008\Projects\Test\Test.exe
   logfile = C:\Documents and Settings\User\Мои документы\Visual S
tudio 2008\Projects\Test\Test.InstallLog
Устанавливается служба Test Service [Server]...
Служба Test Service [Server] успешно установлена.
Создается исходный EventLog Test Service [Server] в журнале Application...

На этапе установки возникло исключение.
System.ArgumentException: Источник Test Service [Server] уже существует на лока
льном компьютере.

Начинается этап отката процедуры установки.
См. файл журнала выполнения операция для сборки C:\Documents and Settings\User\Мои документы\Visual Studio 2008\Projects\Test\Test
.exe.
Данный файл находится в C:\Documents and Settings\User\Мои докумен
ты\Visual Studio 2008\Projects\Test\Test.InstallLog.
Выполняется откат для сборки 'C:\Documents and Settings\User\Мои д
окументы\Visual Studio 2008\Projects\Test\Test.exe'.
Затронуты следующие параметры:
   logtoconsole =
   assemblypath = C:\Documents and Settings\User\Мои документы\Vis
ual Studio 2008\Projects\Test\Test.exe
   logfile = C:\Documents and Settings\User\Мои документы\Visual S
tudio 2008\Projects\Test\Test.InstallLog
Восстанавливается исходное состояние журнала событий для источника Test Service
 [Server].
Выполняется удаление службы Test Service [Server] из системы...
Служба Test Service [Server] успешно удалена из системы.

Этап отката выполнен успешно.

Групповая операция установки выполнена.
Произошел сбой установки и был выполнен откат.


UPD:
"А ларчик просто открывался":  добавил ветку с именем Test Service [Server] в ../EventLog/Application и все заработало.

Это сообщение отредактировал(а) CL0NE - 1.12.2009, 01:50
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0834 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.