nancy netsh

Cómo arreglar una excepción automáticaUrlReservationCreationFailureException cuando se utiliza Nancy FX Self Host



netsh (3)

Al usar Nancy FX, encontré la siguiente excepción que se produjo al intentar iniciar un servicio web: AutomaticUrlReservationCreationFailureException

Después de examinarlo con más detalle, descubrí que la forma de solucionarlo era ejecutar un indicador de cmd (como administrador) y luego ejecutar el siguiente comando:

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

dónde

  • DOMAIN/username es el ID del usuario con el que se ejecutará el servicio
  • 1234 es el puerto en el que se ejecutará el servicio.

Escribo esto aquí en caso de que alguien más encuentre el mismo problema y pase una media hora infructuosa en busca de una respuesta, ¡espero que lo encuentren antes que yo!


El Message de la AutomaticUrlReservationCreationFailureException le indicará esto

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

Las reservas sugeridas se basan en los URI base que usted pasa al host cuando lo crea.


La excepción AutomaticUrlReservationCreationFailureException también aparecerá si está ejecutando NancyFX desde Visual Studio.

Así que asegúrese de estar ejecutando como administrador para que NancyFX configure las configuraciones subyacentes


Si está creando su propio host NancyFx, puede ser más fácil para usted marcar su Configuración de Host de esta manera

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

o...

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

Y, finalmente, tener algo como

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