WCF ServiceHost-Zugriffsrechte

166

Beim Durchlaufen des WCF-Tutorials wird die folgende Fehlermeldung angezeigt.

HTTP konnte die URL http: // +: 8000 / ServiceModelSamples / Service / nicht registrieren . Ihr Prozess hat keine Zugriffsrechte auf diesen Namespace ( Einzelheiten finden Sie unter http://go.microsoft.com/fwlink/?LinkId=70353 ).

Wird dies durch eine Einschränkung unter Windows 7 verursacht?

Joshua
quelle
In diesem Blog finden Sie viele nützliche Informationen . Hey bietet auch ein schönes GUI-Tool.
Bob

Antworten:

179

Das Problem ist, dass die URL nicht von Windows erstellt werden kann.

Zu behebende Schritte: Führen Sie die Eingabeaufforderung als Administrator aus. Fügen Sie die URL zur ACL hinzu

netsh http add urlacl url=http://+:8000/ServiceModelSamples/Service user=mylocaluser
Joshua
quelle
4
Ich bin froh, dass du das behoben hast. Was bedeutete das "+"?
John Saunders
Ich habe die Vermutung, dass dies eine generische lokale IP bedeutet.
Joshua
12
Hinweis: Sie müssen so ziemlich genau url = http: // +: port / path eingeben. url = address: port / path hat bei mir nicht funktioniert, wie du denkst. Beachten Sie auch, dass Sie den Netzwerkserver als Benutzer verwenden müssen ("NT AUTHORITY \ NETWORK SERVICE", wenn das Installationsprogramm Ihres Dienstes darauf eingestellt ist.
Mike Pateras
8
Wie können Sie dies tun, ohne einen Administratorzugriff zu benötigen?
Setzamora
1
Die Verwendung meines Kontos für den Benutzer hat nicht funktioniert. Arbeitete mit Benutzer = Jeder
Kim
90

Wenn Sie über die IDE ausgeführt werden, sollte die Ausführung als Administrator hilfreich sein. Suchen Sie dazu das Anwendungssymbol von Visual Studio 2008/10, klicken Sie mit der rechten Maustaste darauf und wählen Sie "Als Administrator ausführen".

Stephen Newman
quelle
22
Nicht wirklich eine "viel bessere" Lösung @Liam - Administratorrechte in einer Entwicklungsumgebung in einem Unternehmens-Setup könnten Ihnen viel mehr Berechtigungen geben, gefährliche Dinge zu tun. Eine viel einfachere Lösung,
klar
2
Die ursprüngliche Lösung erforderte auch die Ausführung als Administrator - gewährt für einen kürzeren Zeitraum, und natürlich müssen Sie wissen, was Sie in einem Sicherheitskontext tun.
Stephen Newman
1
Also trotzdem ohne Administratorrechte?
Setzamora
Perfekt. Ich habe ein Programm von IDE ausgeführt, das eine URL auf einem anderen Computer registrieren musste, und als Administrator ausgeführt, hat einwandfrei funktioniert.
ThePartyTurtle
36

Eine andere Lösung besteht darin, die Adresse zu verwenden

http: // localhost: 8732 / Design_Time_Addresses / YOUR_ADDRESS .

.NET Framework (3.5) registriert diese Adresse (http: // *: 8732 / Design_Time_Addresses) automatisch für den Debugging-Bereich. Dies ist nützlich, wenn Sie Dienste in Visual Studio zum Debuggen oder Testen hosten müssen. Verwenden Sie dies nicht für die Produktion ...

Davide Icardi
quelle
1
Einige Websites beziehen sich auf Port 8731 anstelle von 8732.
Nenad Dobrilovic
1
@DaviFiamenghi Solange .net 3.5 installiert ist, sollte es funktionieren. Aber ich habe es nie versucht. Normalerweise betrachte ich einen Test wie diesen als Integrationstest, damit ich ihn nicht unter TFS ausführe, sondern nur Unit-Tests unter TFS.
Davide Icardi
@NenadDobrilovic Mine verwendet 8733 :). Das ist aber nicht wichtig.
Hooch
1
Unser Server verwendet localhost: 8733 / Design_Time_Addresses und ich hätte nie gewusst, dass ich ohne Ihre Antwort danach suchen würde, danke. Außerdem zeigte Bobs Tool alle Adressen an, die genehmigt wurden - so entdeckte ich, dass es 8733 war. Danke
Lee Oades
30

Öffnen Sie eine Eingabeaufforderung als Administrator und schreiben Sie den folgenden Befehl, um Ihre URL hinzuzufügen:

netsh http add urlacl url=http://+:8000/YourServiceLibrary/YourService user=Everyone

Einige Punkte, die Sie beachten sollten:

  1. Ändern Sie den Port gemäß Ihrer Codierung
  2. Ändern Sie den Namen der Servicebibliothek gemäß Ihrem Bibliotheksnamen
  3. "YourService" ist optional

Weitere Informationen finden Sie unter: Konfigurieren von HTTP und HTTPS

Metin Atalay
quelle
3

Öffnen Sie Visual Studio als Administrator. Es wird ausgeführt.

Vicky
quelle
Ich hatte das gleiche Problem mit Nunit-Gui. Lief als Administrator, alles gut.
Valamas
Ich habe das gleiche Problem im Vergleich zu 2013 und das Ausführen als Administrator funktioniert nicht
ZoomVirus
Warum brauche ich einen Administrator? Warum kann ich nicht als Standardbenutzer ausgeführt werden?
John
-2

Ich arbeite an Windows Vista. Sogar ich hatte das gleiche Problem, aber als ich versuchte, VS 2008 mit Administratorrechten auszuführen, wurde das Problem behoben und mein Dienst war betriebsbereit. :) :)

Anitesh Kumar.
quelle
-2

Das Ausführen von Visual Studio als Administrator könnte das Problem beheben. Wenn Sie jedoch Visual Studio beispielsweise mit TortoiseSVN verwenden, können Sie keine Änderungen festschreiben. Eine andere mögliche Lösung wäre, den Dienst als Administrator und den Rest Visual Studio als lokalen Benutzer auszuführen.

Doro
quelle
-3

Öffnen Sie Ihr Visual Studio im Administrationsmodus und probieren Sie es aus.

Palnati
quelle
-3

Öffnen Sie Ihr Visual Studio als Administrator:

Geben Sie hier die Bildbeschreibung ein

lalit
quelle