Я пытаюсь использовать Nancy (используя собственный хостинг с Razor для просмотра пакетов nuget) внутри службы Topshelf. Я размещаю его на http://localhost:8585/,, и он прекрасно работает, пока я нахожусь в режиме отладки или вызываю свой исполняемый файл напрямую. Модуль Nancy идеально подходит для просмотра бритвы.
Затем я устанавливаю приложение:
myapp.exe install
Когда я запускаю службу, кажется, что она работает нормально, ошибок нет. Затем, когда я захожу на http://localhost:8585/ в браузере, я получаю пустой ответ. Есть идеи, почему?
Прежде чем начать хостинг сервиса с помощью Topshelf, я запускаю Нэнси:
_nancyHost = new NancyHost(_baseUri);
_nancyHost.Start();
После этого служба верхнего уровня настраивается и запускается следующим образом:
using (Container)
{
var host = HostFactory.New(config =>
{
config.EnableDashboard();
config.AfterStartingServices(() => Console.WriteLine("Done starting..."));
config.Service<EventHandlerService>(s =>
{
s.SetServiceName("EventHandlerService");
s.ConstructUsing(c => Container.Get<EventHandlerService>());
s.WhenStarted(n => StartService(n, stopwatch));
s.WhenStopped(n => StopService(n, stopwatch));
});
config.RunAsLocalSystem();
config.SetDescription("A service for processing events.");
config.SetDisplayName("EventHandlerService");
config.SetInstanceName("EventHandlerService");
config.SetServiceName("EventHandlerService");
});
host.Run();
}
Я использую ninject, а методы StartService и StopService - это просто функции, которые печатают текущее значение stopwatch.ElapsedMilliseconds.
Вот конфигурация моего модуля Nancy:
Get["/"] = parameters =>
{
var indexViewModel = new IndexViewModel { CurrentDateTime = DateTime.Now, WorkLog = _service.WorkLog };
return View["index", indexViewModel];
};
Get["/js/{file}"] = p =>
{
return Response.AsJs("scripts/" + p.file as String);
};
Get["/style/{file}"] = p =>
{
return Response.AsCss("content/themes/base/" + p.file as String);
};
Get["/img/{file}"] = p =>
{
return Response.AsImage("content/themes/base/images/" + p.file as String);
};
Я использую все значения по умолчанию в Нэнси, кроме частей Self Hosting & Razor. Есть идеи, что может происходить?
Я также попробовал netsh http add urlacl url=http://+:8585/ user=\Everyone
, и это, похоже, не повлияло на поведение.