2017-02-09 19 views
0

Я создал службу Windows (используя пакет Topshelf), который использует WebApp.Start для прослушивания HTTP-запросов. Мой код выглядит следующим образом:Открытые страницы Microsoft.Owin.Hosting.WebApp.Start из службы Windows недоступны на удаленных компьютерах

var options = new StartOptions(); 
    options.Urls.Add("http://localhost:9095"); 
    options.Urls.Add("http://127.0.0.1:9095"); 
    options.Urls.Add($"http://{ConfigurationHelper.IPAddress}:9095"); 
    options.Urls.Add($"http://{Environment.MachineName}:9095"); 

    Microsoft.Owin.Hosting.WebApp.Start<Startup>(options); 

я могу поразить все нужные адреса, когда я просмотре на компьютере службы Windows, но когда я на удаленном компьютере в той же сети с доступом к машине, Я получаю ошибку 500 при попадании в URL (то есть http://192.168.100.14:9095/hangfire/).

Некоторые примечания:

  1. брандмауэр Windows выключен, но я до сих пор подтверждающие ИТ, могут ли или не наш аппаратный брандмауэр блокирует что-то (что мы получим 500, если это был случай, или 404?)

  2. Служба Windows работает как локальный пользователь, входящий в группу «Администраторы».

  3. Для каждого из этих URL-адресов, я побежал netsh команду: netsh http add urlacl url=http://127.0.0.1:9095/ user=myAdminUser

Любые другие идеи о том, почему я получаю 500 или как увидеть любую диагностическую информацию в любом месте? (просмотр отладки и просмотрщик событий не имеют ничего).

Это мое первое приложение Owin, поэтому я пока очень зеленый.

Обновление: Owin ошибка трассировки

[8496] BTR.Evolution.Service Owin Исключение: Ссылка на объект не указывает на экземпляр объекта.
[8496]
[8496] на Hangfire.Dashboard.MiddlewareExtensions.Unauthorized (IOwinContext owinContext)
[8496] на Hangfire.Dashboard.MiddlewareExtensions. <> c__DisplayClass1_2.b__1 (IDictionary`2 ENV)
[8496] на Microsoft.Owin.Mapping.MapMiddleware.d__0.MoveNext()
[8496] --- Конец трассировки стека из предыдущего места, где был брошен исключение - -
[8496] на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача) Задача
[8496] на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача) Задача
[8496] на BTR.Evolution. Service.GlobalExceptionMiddleware.d__1.MoveNext() в C: \ BTR \ Source \ Evolution.Service \ BTR.Evolution.Service \ Startup.cs: строка 20

Возможно, это был не OWIN, а виновник, а скорее Hangfire и моя попытка использовать его удаленно. Переходите на поиск фильтра авторизации, чтобы узнать, поможет ли это.

+0

В чем причина ошибки 500? –

+0

Хм, я в Chrome и больше ничего не вижу. Все, что я получаю, это '192.168.100.14 страница не работает. 192.168.100.14 в настоящее время не может обработать этот запрос. HTTP ERROR 500' И есть кнопка «Reload», но ничего больше. Я не видел ничего в настройках Chrome, чтобы включить более подробную информацию, но, возможно, я пропустил это. – Terry

+0

Нажмите f12, перезагрузите страницу и проверьте сетевой инспектор для получения дополнительных подсказок ... –

ответ

0

Посмотрите, как получить трассировку стека из исключения, создав регистратор промежуточного программного обеспечения OWIN. См. Unhandled Exception Global Handler for OWIN/Katana? для более подробной информации.

Судя по обновлению, которое включает в себя трассировку стека, вам нужно изучить проблемы с auth в hangfire. Проверьте http://docs.hangfire.io/en/latest/configuration/using-dashboard.html#configuring-authorization - В этом случае, по соображениям безопасности, по умолчанию разрешен только локальный запрос.Он также предоставляет пример кода, показывающий, как использовать IAuthorizationFilter, чтобы разрешить удаленный запрос.