Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Skrócony regulamin

[C#] Usługa nie wyświetla się na liście usług

Idź do strony 1, 2  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mikmas



Dołączył: 26 Maj 2005
Posty: 5617
Skąd: From Alex Stadt

PostWysłany: Pią Lut 10, 2012 11:53 am      Temat postu: [C#] Usługa nie wyświetla się na liście usług Odpowiedz z cytatem Pisownia

Napisałem usługę w c#, ale po stworzeniu deployera wg tego tutoriala sekcja "To create the installers for your service" usługa nie wyświetla się w services.msc. Instalacja przeszła niby poprawnie. Co to może być? Wiem, że mało informacji, ale za bardzo nie wiem, jakie są potrzebne (to mój pierwszy taki projekt)
_________________
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d- s---:--->+:+ a-->--- C++(+++) U-- P+ L-- E--
W++ N+ o-- K- w++(+++) O--- M-(--) V-- PS PE++ Y
PGP- t 5 X++ R tv- b+ DI- D+++(++++) G++ e h* r+ y?
------END GEEK CODE BLOCK------
Alternatywny komunikator GG
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora Numer GG Tlen
izaw



Dołączył: 12 Wrz 2008
Posty: 2003
Skąd: Łódź

PostWysłany: Pią Lut 10, 2012 12:41 pm      Temat postu: Odpowiedz z cytatem Pisownia

1. Czy ona istnieje w aplecie Usługi:
Kod:
%SystemRoot%\system32\services.msc /s

2. Pokaż dane z rejestru na temat swojej usługi.
Kod:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\twoja_usluga]

3. Czy program odpowiedzialny za usługę można uruchomić ręcznie z pliku?
4. Uprawnienia programu i wymagane dla usługi. Czy nie za małe?

_________________
Program nie robi tego co chce programista, ale to co programista zaprogramował
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
mikmas



Dołączył: 26 Maj 2005
Posty: 5617
Skąd: From Alex Stadt

PostWysłany: Pią Lut 10, 2012 2:41 pm      Temat postu: Odpowiedz z cytatem Pisownia

Sry, że piszę pod własnym postem, jednak problem nie jest ściśle związany z poprzednim, więc robię taki "nowy-stary" wątek w ten sposób :D. Jeżeli nie jest to dobre - napiszcie, złączę je.

Oczywiście ja dałem ciała, nie zrobiłem jednak DOKŁADNIE wg instrukcji. Teraz już jest ok. Jednak usługa nie startuje. Przynajmniej tak mi się wydaje, bo jedyny "kontakt ze światem" jest dzięki plikom. Teraz pytania:
1. Czy usługa ma dostęp w ogóle do plików? Chciałem utworzyć plik C:\debug.log (jedyne co dopisałem to "C:\\" przed nazwą pliku, bo przedtem tworzył teoretycznie w ścieżce względnej, która może być inna niż exeka) i system zaraz po uruchomieniu usługi mówił, że ta popełniła samobójstwo (wyłączyła się zaraz po starcie) - śmierdzi mi tu jakimś unhandled exception.
2. Jaka jest ścieżka względna uruchamianych usług? Inna niż miejsca, gdzie jest zainstalowana usługa?

EDIT!
Zmiana zeznań: debug.log nie ma chyba na to wplywu. Można z jakiś logów albo czegoś odczytać, czemu usługa się wyrypuje?

_________________
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d- s---:--->+:+ a-->--- C++(+++) U-- P+ L-- E--
W++ N+ o-- K- w++(+++) O--- M-(--) V-- PS PE++ Y
PGP- t 5 X++ R tv- b+ DI- D+++(++++) G++ e h* r+ y?
------END GEEK CODE BLOCK------
Alternatywny komunikator GG
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora Numer GG Tlen
izaw



Dołączył: 12 Wrz 2008
Posty: 2003
Skąd: Łódź

PostWysłany: Pią Lut 10, 2012 2:53 pm      Temat postu: Odpowiedz z cytatem Pisownia

Systemy od Visty mają chroniony katalog główny partycji systemowej. Wybierz sobie inną ścieżkę, np. dla próby w katalogu temp. Tam dostęp jest zawsze.
_________________
Program nie robi tego co chce programista, ale to co programista zaprogramował
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
hejmus



Dołączył: 26 Maj 2005
Posty: 2135

PostWysłany: Pią Lut 10, 2012 4:58 pm      Temat postu: Odpowiedz z cytatem Pisownia

A debugger naprawdę nic ciekawego nie powiedział?
_________________
kompilacja Gentoo na Pentium MMX 233MHz - niezapomniane przeżycia ;)
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
hobson



Dołączył: 13 Sie 2007
Posty: 410
Skąd: Trójmiasto

PostWysłany: Pią Lut 10, 2012 5:34 pm      Temat postu: Odpowiedz z cytatem Pisownia

Polecam narzędzia typu Process Explorer i Process Monitor z zestawu SysInternals Suite, do pobrania ze strony Microsoftu. Dają dużo ciekawych informacji nt. uruchomionych procesów i tego, co, skąd, jak i kiedy próbują czytać, pisać, otworzyć, sięgnąć.

Pamiętaj, ze usługi są w niektórych aspektach mocno ograniczone (chyba, że działają na local account, czego należy unikać) - nie mają dostępu do pulpitu (nie mogą więc tworzyć okien, wyświetlać komunikatów, itp), mają inny zestaw uprawnień, niż zalogowany użytkownik (bo zazwyczaj nie są uruchamiane przez zalogowanego użytkownika) i inne. Komunikaty zwykle zapisują do dziennika zdarzeń (dostępnego w aplecie 'zarządzanie komputerem" w panelu sterowania), chociaż ciężko jest stamtąd wychwycić coś czytelnego (poza kodem błędu).
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Numer GG
mikmas



Dołączył: 26 Maj 2005
Posty: 5617
Skąd: From Alex Stadt

PostWysłany: Pon Lut 13, 2012 8:41 am      Temat postu: Odpowiedz z cytatem Pisownia

@izaw, hobson:
Dzięki! Jakoś udało się mi odpalić ładnie ustawiając ścieżkę na C:\temp :P

@hejmus:
Nie wiem, bo nie wiem, jak go odpalić :D:D:D



Teraz powstaje pozornie trywialny problem - gdzie umieścić pliki konfiguracyjne? Jest tam prosty xmlek z mega ważnymi ustawieniami. Spróbowałem wyciągnąć ścieżkę bezwzględną do pliku (w program files), ale program się sypie. Może nie ma uprawnień, może źle to robię?
Kod:
        static Config()
        {
            appPath=Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName );
        }

A nie wiem, jak zdebugować usługę, więc nawet nie wiem, co tak naprawdę jest w appPath.

Rozwiązanie "musi być folder xxxx na dysku C:, gdzie będą ustawienia" jest mało profesjonalnym rozwiązaniem :/.

_________________
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d- s---:--->+:+ a-->--- C++(+++) U-- P+ L-- E--
W++ N+ o-- K- w++(+++) O--- M-(--) V-- PS PE++ Y
PGP- t 5 X++ R tv- b+ DI- D+++(++++) G++ e h* r+ y?
------END GEEK CODE BLOCK------
Alternatywny komunikator GG
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora Numer GG Tlen
biernik



Dołączył: 06 Wrz 2008
Posty: 1024
Skąd: 63°59'37''N 22°37'58''W

PostWysłany: Pon Lut 13, 2012 8:55 am      Temat postu: Odpowiedz z cytatem Pisownia

Ja w ten sposób dostaję katalog z moim servicem:
Kod:
Directory.GetParent(Assembly.GetEntryAssembly().Location).FullName;



//edit

Co do debugowania - nie pamiętam już, ale czy nie wystarczy "normalnie" ustawić płapkę i walnąć F5? Jeżeli nie to próbowałeś przez "attach to process"? Nie chce mi się sprawdzać ale pamiętam, że debugowanie usług nie było jakieś szczególnie magiczne.

pzdr.

_________________
I like cheese.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
hobson



Dołączył: 13 Sie 2007
Posty: 410
Skąd: Trójmiasto

PostWysłany: Pon Lut 13, 2012 10:09 am      Temat postu: Odpowiedz z cytatem Pisownia

mikmas napisał:

Teraz powstaje pozornie trywialny problem - gdzie umieścić pliki konfiguracyjne?

Może rejestr byłby dobrym miejscem do przechowywania konfiguracji? Np. podklucz w HKLM\Software?

mikmas napisał:

Może nie ma uprawnień, może źle to robię?

Gdybyś sprawdził kod błędu, np. zalogował go gdzieś, to powinieneś chociaż mniej więcej wiedzieć, jaki jest problem.

mikmas napisał:

A nie wiem, jak zdebugować usługę

Wersja express środowiska Visual Studio jest niestety pozbawiona opcji 'Attach to process...', która jest bardzo przydatna w takich sytuacjach :(

mikmas napisał:
więc nawet nie wiem, co tak naprawdę jest w appPath.

To możesz wywnioskować sprawdzając w Process Explorerze ścieżki do uruchomionych procesów i modułów. Jeśli twoja usługa jest zawarta w procesie hostującym, jak svchost, to jego katalogiem roboczym będzie katalog systemowy. Jeśli w czasie instalacji wskazałeś, że ma być uruchamiana jako samodzielny proces, to powinna być uruchomiona z katalogu, w którym została zainstalowana. Może rzeczywiście lepsze będzie sprawdzenie ścieżki do modułu albo assembly.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Numer GG
mikmas



Dołączył: 26 Maj 2005
Posty: 5617
Skąd: From Alex Stadt

PostWysłany: Pon Lut 13, 2012 10:18 am      Temat postu: Odpowiedz z cytatem Pisownia

Czyli aby zdebuggować trza attach to process i do procesu services.exe? OK, popróbuję. Dzięki wielkie za pomoc :)
_________________
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d- s---:--->+:+ a-->--- C++(+++) U-- P+ L-- E--
W++ N+ o-- K- w++(+++) O--- M-(--) V-- PS PE++ Y
PGP- t 5 X++ R tv- b+ DI- D+++(++++) G++ e h* r+ y?
------END GEEK CODE BLOCK------
Alternatywny komunikator GG
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora Numer GG Tlen
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.13878 sekund, zapytan = 7
contact

| Darmowe programy i porady Jelcyna | VB4all | Tansze zakupy w Helionie |