Как исправить исключение AutomaticUrlReservationCreationFailureException при использовании собственного хоста Nancy FX

При использовании Nancy FX я столкнулся со следующим исключением, которое было брошено при попытке запустить веб-службу: AutomaticUrlReservationCreationFailureException

Посмотрев на него более подробно, я обнаружил, что способ исправить это - запустить командную строку cmd (как администратор), а затем запустить следующую команду:

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

где

  • DOMAIN\username - это идентификатор пользователя, сервис будет запущен под
  • 1234 - это порт, который служба будет запущена на

Я пишу это здесь, если кто-то другой сталкивается с тем же вопросом и тратит бесплодные полчаса или так ищет ответ - надеюсь, они найдут это раньше, чем я!

Ответ 1

Message AutomaticUrlReservationCreationFailureException сообщит вам об этом

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

Предлагаемые оговорки основаны на базовых URI, которые вы передаете хосту при его создании.

Ответ 2

Если вы создаете свой собственный хост NancyFx, вам может быть проще указать ваш HostConfiguration таким образом

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

или...

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

А потом, наконец, получилось что-то вроде

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

Ответ 3

AutomaticUrlReservationCreationFailureException также появится, если вы запускаете NancyFX из Visual Studio.

Поэтому убедитесь, что вы работаете как администратор, чтобы NancyFX мог настроить базовые конфигурации