2012-12-16 16 views
12

Chcę hostować wcf w usłudze okna. Zrobiłem kilka razy wcześniej bez żadnego problemu. Tym razem Po zainstalowaniu usługi i kliknięciu przycisku start pojawia się następujący błąd w EventViewer.Usługa nie może zostać uruchomiona. Nie można zarejestrować adresu URL:

Service cannot be started. System.ServiceModel.AddressAccessDeniedException: HTTP could not register URL http://+:.../.../. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details).

Kiedy gospodarzem tej samej usługi, tym samym adresem na ConsoleApplication - wszystko w porządku.

Widziałem pytania here i here, ale żadne z rozwiązań nie pomogło mi.

Czy ktoś ma pomysł?

Odpowiedz

7

Uważam, że zmiana konto instalatora LocalSystem na pracę :-)

+3

Zajęło mi trochę czasu, aby znaleźć jak to zrobić, więc oto kroki: Otwórz program usług (Start -> zobacz lokalne usługi w Win 7), znajdź swoją usługę na liście, kliknij prawym przyciskiem myszy, kliknij właściwości, przejdź do zakładki logowania. Zmieniłem moje na moje konto Active Directory i hasło. – Aligned

+0

Jeśli chcesz zmienić samą usługę, bez zmiany instancji usługi ręcznie. Zmień właściwość "Konto" w ServiceProcessInstaller. – Harry

17

chodzi o odpowiedź, że to trochę shotgun debugowania. Teraz masz usługę sieciową z uprawnieniami administratora:

LocalSystem Account (Windows):

Konto LocalSystem [...] posiada szerokie uprawnienia na komputerze lokalnym i działa jako komputer w sieci. Token zawiera identyfikatory identyfikatorów NT AUTHORITY \ SYSTEM i BUILTIN \ Administrators; te konta mają dostęp do większości obiektów systemowych.

Większość usług nie wymaga tak wysokiego poziomu uprawnień. Jeśli twoja usługa nie potrzebuje tych uprawnień i nie jest usługą interaktywną, rozważ użycie konta LocalService lub konta NetworkService. Aby uzyskać więcej informacji, zobacz Zabezpieczenia usług i prawa dostępu.

Więc lepiej uruchomić tę usługę jako sieciowa, i nadać mu odpowiednie uprawnienia do korzystania z portu starasz się używać jak wyjaśniono w Configuring HTTP and HTTPS:

netsh http add urlacl url=http://+:80/MyUri user="NT AUTHORITY\NETWORK SERVICE" 
Powiązane problemy