2013-08-21 8 views
15

Verwendung Wenn Nancy FX verwenden, ich auf die folgende Ausnahme kam, die geworfen wurde, als einen Web-Service zu feuern versuchen: AutomaticUrlReservationCreationFailureExceptionWie ein AutomaticUrlReservationCreationFailureException zu beheben, wenn Nancy FX Selbst-Host

in etwas hinein sah Nachdem mehr Detail, entdeckte ich, dass die Art und Weise, dies zu beheben war eine cmd Aufforderung zu laufen (als Administrator), dann führen Sie den folgenden Befehl ein:

netsh http add urlacl url=http://+:1234/ user=DOMAIN\username 

wo

  • DOMAIN\username ist die ID des Benutzers wird der Dienst
  • 1234 wird der Port unter
  • ausgeführt werden, dass der Dienst auf

werden laufen werde ich dies hier falls jemand schreiben sonst über das gleiche Problem kommt und verbringt ein Fruchtlose halbe Stunde oder so auf der Suche nach einer Antwort - hoffentlich werden sie das früher finden als ich!

+0

Sie sollten dies einzurichten Format als Frage und geben Sie Ihre eigene Antwort darauf; Dies wird zukünftigen Benutzern helfen, besonders wenn es andere Lösungen gibt. –

Antwort

14

Die Message des AutomaticUrlReservationCreationFailureException wird Ihnen sagen, diese

The Nancy self host was unable to start, as no namespace reservation existed for the provided url(s). 

Please either enable CreateNamespaceReservations on the HostConfiguration provided to the NancyHost, or create the reservations manually with the (elevated) command(s): 

http add urlacl url=http://+:8888/nancy/ user=Everyone 
http add urlacl url=http://127.0.0.1:8888/nancy/ user=Everyone 
http add urlacl url=http://+:8889/nancytoo/ user=Everyone 

Die Reservierungen vorgeschlagen ist auf der Basis URIs basiert, die Sie in den Host übergeben, wenn Sie es schaffen.

+0

Ah ja, ich hätte die Fehlermeldung ein wenig genauer angehen sollen - tut mir leid, dass ich nichts entdeckt habe. Ich bin mit Netzwerkkonfigurationstools nicht vertraut und habe daher nicht verstanden, was die Nachricht bedeutet. Vielen Dank für die Hilfe bei der Beantwortung meiner Frage. –

+6

Dieser Schritt scheint nicht notwendig, wenn ich meinen eigenen Webserver mit HttpListener erstelle - nur neugierig, warum das für Nancy benötigt würde? – chrisb

13

Wenn Sie Ihre eigene NancyFx Host erstellen, kann es einfacher für Sie Flagge Ihre HostConfiguration diese Weise

HostConfiguration hostConfigs = new HostConfiguration() 
{ 
    UrlReservations = new UrlReservations() { CreateAutomatically = true } 
}; 

oder ...

HostConfiguration hostConfigs = new HostConfiguration(); 
hostConfigs.UrlReservations.CreateAutomatically = true; 

Und dann endlich so etwas wie haben sein

NancyHost nancyHost = new NancyHost(new Uri("http://+:80"), new DefaultNancyBootstrapper(), hostConfigs); 
+1

Muss das Nancy-Dienstkonto lokale Administratorrechte haben? –

+0

ich mit tat Code: System.InvalidOperationException: Kann nicht Namespace Reservierung bei Nancy.Hosting.Self.NancyHost.StartListener() bei Nancy.Hosting.Self.NancyHost.Start() – Arnaud

+0

Ok, bekam es konfigurieren. Es ist, weil auf Französisch "Everyone" "Tout le monde" mit zwei Leerzeichen ist und dass der Befehl, den Nancy startet, das Argument nicht mit Anführungszeichen schützt ... Sot, dass diese Methode nicht zuverlässig ist, müssen netsh in einem Installationsprogramm verwenden . – Arnaud

7

Die AutomaticUrlReservationCreationFailureException wird auch angezeigt, wenn Sie NancyFX von Visual Studio ausgeführt wird.

So stellen Sie sicher, dass Sie als Administrator, um für NancyFX laufen die zugrunde liegenden Konfigurationen