Ich bin ein Anfänger in WCF, aber ich versuche meine Erfahrung zu verbessern. Und im ersten Schritt stand ich vor dem Problem. 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 Dienst, der mir eine Nummer über die Konsole gibt. Aber Debug gib mir die Ausnahme: (anstelle von Nummer :))
HTTP konnte die URL http: // +: 8000 / HelloWCF / nicht registrieren . Ihr Prozess hat keine Zugriffsrechte auf diesen Namespace ( Einzelheiten finden Sie unter http://go.microsoft.com/fwlink/?LinkId=70353 ).
Haben Sie jemals die gleiche Situation erlebt? Ich freue mich über jeden Rat.
Antworten:
Leider ist der Link im Ausnahmetext http://go.microsoft.com/fwlink/?LinkId=70353 fehlerhaft. Früher führte es jedoch zu http://msdn.microsoft.com/en-us/library/ms733768.aspx, in dem erläutert wird, wie die Berechtigungen festgelegt werden.
Grundsätzlich werden Sie aufgefordert, den folgenden Befehl zu verwenden:
netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user
Mithilfe von können Sie weitere Hilfe zu den Details erhalten
netsh
Beispielsweise:
netsh http add ?
Hilft beim
http add
Befehl.quelle
COMPUTER_NAME\USER_NAME
den obigen Befehl.netsh http add urlacl url=http://+:80/ user=DOMAIN\user
wenn Sie dem Konto Zugriffsrechte auf Namespaces am Port gewähren möchten.Ich habe die Visual Studio-IDE geschlossen und sie erneut geöffnet, indem ich mit der rechten Maustaste auf das Visual Studio-Symbol geklickt und "Als Administrator ausführen" gesagt habe. Als ich dann den Host ausgeführt habe, hat es funktioniert !!!
quelle
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.
quelle
Sie benötigen einige Administratorrechte für Ihr Konto, wenn sich Ihr Computer im lokalen Netzwerk befindet. Dann wenden Sie einige Administratorrechte auf Ihren Benutzer an. Andernfalls sollten Sie ide als Administrator starten.
quelle
Sie müssen lediglich Ihre Visual Studio-Umgebung schließen und erneut öffnen, indem Sie "Als Administrator ausführen" verwenden. Es sollte jetzt erfolgreich ausgeführt werden.
quelle
In Windows Vista und höher würde das HTTP-WCF-Dienstmaterial die von Ihnen erwähnte Ausnahme verursachen, da ein eingeschränktes Konto dafür kein Recht hat. Dies ist der Grund, warum es funktioniert hat, als Sie es als Administrator ausgeführt haben.
Jeder vernünftige Entwickler muss ein EINGESCHRÄNKTES Konto verwenden und nicht als Administrator. Dennoch gehen viele Leute den falschen Weg, und genau deshalb gibt es so viele Anwendungen, dass Administratorrechte erforderlich sind, wenn sie nicht wirklich benötigt werden. Faul arbeiten führt zu faulen Lösungen. Ich hoffe, Sie arbeiten immer noch in einem eingeschränkten Konto (meine Glückwünsche).
Es gibt ein Tool namens NamespaceManagerTool (ab 2008), wenn ich mich richtig erinnere, das die eingeschränkten Benutzerberechtigungen für diese Service-URLs gewähren soll, die Sie für WCF definieren. Das habe ich aber nicht benutzt ...
quelle
Ihr Beispielcode funktioniert nicht wie gezeigt, da Sie vergessen haben, ein
Console.ReadLine()
vor derserviceHost.Close()
Zeile einzufügen. 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 Administratorkonto auf Ihrem Computer angemeldet sind. Wenn Sie ein Administrator sind, kann es sein, dass der World Wide Web Publishing Service (W3SVC) nicht ausgeführt wird, um HTTP-Anforderungen zu verarbeiten.
quelle
Obwohl ich dieses Problem auf einem Computer nach den Lösungen der anderen Benutzer lösen konnte, löste der Befehl
netsh
das Problem auf einem meiner Computer nicht, und obwohl der aktuelle Benutzer über Administratorrechte verfügte, wurde immer noch die URL "HTTP konnte keine URL registrieren" angezeigt .... Ihr Prozess hat keine Zugriffsrechte auf diesen Namespace ". Ich teile meine Lösung für den Fall, dass Sie sie immer noch nicht mit den anderen Lösungen zum Laufen bringen.Nachdem ich auch versucht hatte, dem Benutzer im physischen Verzeichnis meiner Website Schreibberechtigungen zu erteilen, und keinen Erfolg hatte, beschloss ich schließlich, die IIS-Einstellungen zu ändern .
Wie die folgenden Bilder zeigen, habe ich die Anmeldeinformationen für den physischen Pfad meiner Website so konfiguriert, dass eine Verbindung als bestimmter Benutzer hergestellt wird. Hierbei handelt es sich um ein Administratorkonto mit DOMAIN \ Benutzername und Kennwort. Dies war ausreichend, um den Fehler verschwinden zu lassen.
quelle
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. Dies hat mein Problem behoben.
quelle