nachfolger - HTTP konnte URL http://+:8000 / HelloWCF / nicht registrieren.Ihr Prozess hat keine Zugriffsrechte für diesen Namespace




tutorial c# (9)

Sie müssen einfach Ihre Visual Studio-Umgebung schließen und mit 'Als Administrator ausführen' erneut öffnen. Es sollte jetzt erfolgreich ausgeführt werden.

Ich bin ein Anfänger in WCF, aber versuche, meine Erfahrung zu verbessern. Und auf dem ersten Schritt habe ich mich dem Problem gestellt. Ich habe den einfachsten WCF-Dienst erstellt. Die Auflistung des Codes: (der gesamte Code in einer Datei)

using System;
using System.ServiceModel;

namespace EssentialWCF
{
    [ServiceContract]
    public interface IStockService
    {
        [OperationContract]
        double GetPrice(string ticker);
    }

    public class StockService : IStockService
    {
        public double GetPrice(string ticker)
        {
            return 94.85;
        }
    }

    class Service
    {
        static void Main(string[] args)
        {
            ServiceHost serviceHost = new ServiceHost(typeof(StockService),
                                                        new Uri("http://localhost:8000/HelloWCF"));

            serviceHost.AddServiceEndpoint(typeof(IStockService), new BasicHttpBinding());
            serviceHost.Open();

            Console.WriteLine("To continue press ENTER");

            serviceHost.Close();
        }
    }
}

Das wäre der Service, der mir eine Nummer über die Konsole gibt. Aber debug gebe mir die Ausnahme: (statt Nummer :))

HTTP konnte URL http://+:8000/HelloWCF/ nicht registrieren. Ihr Prozess verfügt nicht über Zugriffsrechte für diesen Namespace (Details finden Sie unter http://go.microsoft.com/fwlink/?LinkId=70353 ).

Waren Sie jemals mit der gleichen Situation konfrontiert? Ich werde mich freuen, jeden Rat zu sehen.


Ihr Beispielcode funktioniert nicht wie angezeigt, da Sie vergessen haben, eine Console.ReadLine() vor der serviceHost.Close() . Das heißt, der Host wird geöffnet und sofort geschlossen.

Abgesehen davon, scheint es, dass Sie ein Berechtigungsproblem auf Ihrem Computer haben. Stellen Sie sicher, dass Sie als Administrator auf Ihrem Computer angemeldet sind. Wenn Sie ein Administrator sind, kann es sein, dass Sie den WWW-Publishingdienst (W3SVC) nicht ausführen, um HTTP-Anforderungen zu verarbeiten.


Schließen Sie iis express und alle Browser (wenn die URL in einem der Browser geöffnet wurde). Öffnen Sie auch die Visual Studio IDE im Admin-Modus. Das hat mein Problem gelöst.


Klicken Sie mit der rechten Maustaste auf Visual Studio> Als Administrator ausführen> Öffnen Sie Ihr Projekt und führen Sie den Dienst aus. Dies ist ein privilegiertes Problem.


In Windows Vista und höher würde der HTTP-WCF-Dienst die von Ihnen erwähnte Ausnahme verursachen, da ein eingeschränktes Konto dafür nicht geeignet ist. Aus diesem Grund hat es funktioniert, als Sie es als Administrator ausgeführt haben.

Jeder vernünftige Entwickler muss ein RESTRICTED-Konto anstatt als Administrator verwenden, aber viele Leute gehen in die falsche Richtung, und genau deshalb gibt es so viele Anwendungen, die DEMAND-Admin-Berechtigungen benötigen, wenn sie nicht wirklich benötigt werden. Auf die faule Art zu arbeiten führt zu faulen Lösungen. Ich hoffe, du arbeitest immer noch in einem eingeschränkten Account (herzlichen Glückwunsch).

Es gibt ein Tool namens NamespaceManagerTool namens NamespaceManagerTool (ab 2008), wenn ich mich richtig erinnere, das den eingeschränkten Benutzern Berechtigungen für diese Service-URLs gewähren soll, die Sie für WCF definieren. Ich habe das aber nicht benutzt ...



Während ich in der Lage war, dieses Problem in einem Computer nach den anderen Benutzerlösungen zu lösen, netsh der Befehl netsh das Problem auf einer meiner Maschinen nicht und obwohl der aktuelle Benutzer Administratorrechte hatte, bekam ich immer noch die "HTTP konnte nicht registrieren URL .... Ihr Prozess hat keine Zugriffsrechte auf diesen Namespace ". Also teile ich meine Lösung für den Fall, dass Sie es immer noch nicht mit den anderen Lösungen arbeiten.

Nachdem ich auch versucht habe, dem Benutzer im physischen Verzeichnis meiner Website Schreibrechte zu geben und keinen Erfolg zu erzielen, entschied ich mich schließlich dafür, die IIS-Einstellungen zu ändern .

Wie die Bilder unten zeigen, habe ich die Physical Path Credentials meiner Website konfiguriert, um eine Verbindung als ein bestimmter Benutzer herzustellen, der ein Administrator-Account mit DOMAIN \ Benutzername und Passwort war, und dies war genug, um den Fehler verschwinden zu lassen.


Ich schloss Visual Studio IDE und öffnete es erneut, indem ich mit der rechten Maustaste auf das Visual Studio-Symbol klickte und "Als Administrator ausführen" sagte. Als ich dann den Host ausführte, funktionierte es !!!


Durch das Übergeben allgemeiner Dot Net-Ausnahmen würden die Service-Client-Proxies und der Server-Kanal in einen fehlerhaften Zustand versetzt, wenn Sie nicht basicHTTPBinding verwenden ... Um zu vermeiden, dass Sie immer FaultException aus dem Service werfen sollten ...

throw new FaultException("Your message to the clients");




wcf