Статьи

Автоматический запуск сервера OWIN ASP.NET на Raspberry PI 2 при загрузке

Вдохновленный гудением, охватившим сообщество Microsoft, когда было объявлено, что новый  Raspberry PI 2 будет поддерживать Windows 10,  я на самом деле тоже получил его, с помощью члена сообщества  Мориса Спронкерса  (спасибо, брат!)

образ

Windows 10 для устройств еще не выпущена, поэтому здесь я немного стремился применить свои навыки .NET, глядя на устройство, которое на момент написания этой статьи работало только на Linux. У меня большой опыт работы с UNIX, но после того, как мир ГИС в 1997 году в значительной степени перешел на Windows NT (!), Мои навыки работы с командной строкой стали  немного  ржавыми. К счастью, есть этот замечательный учебник от  этого удивительного бельгийского парня по имени Ян Тиленс , который описывает  настройку устройства для разработчиков .NET  и  запуск на нем сервера ASP.NET OWIN .

Единственное, что я не смог заставить работать — это заставить проклятый OWIN-сервер запускаться  во время загрузки . Я узнал, в конце концов. Проблема не столько в конфигурации, сколько в стандартном OWIN-коде автономного сервера. Теперь поклонники Linux по всему миру, возможно, будут высмеивать меня за полное отсутствие понимания их системы, не говоря уже о том, как я пришел к решению, но какого черта. Лишь немногие учатся, не падая на лицо первыми.

Поэтому после долгих осмотров различных сайтов, бормотания в Твиттере и получения помощи от разных людей, я пришел  на эту страницу, на  которой вам нужно отредактировать файл с именем  /etc/rc.local . Подумайте об этом, как старый autoexec.bat. Это, конечно, вы можете сделать только как root. Таким образом, вы должны начать это из командной строки [вставьте бормотание здесь]. Пуристы могут использовать Nano или даже VI (я все еще знаю некоторые нажатия клавиш, если я перехожу на автоматический режим), но я обнаружил, что вы можете получить хороший блокнот, такой как редактор, набрав
sudo leafpad /etc/rc.local

И затем вы добавляете строку
su — pi -c «mono /home/pi/Desktop/OwinDemo/OwinTest.exe» &

и это должно сработать (да, я разместил свою демонстрацию на рабочем столе. Мне нравится графический интерфейс. Подайте в суд). Беда в том, что после перезагрузки это не так. Вспоминая прошлые дни разработки сценариев оболочки, я изменил строку на:
su — pi -c «mono /home/pi/Desktop/OwinDemo/OwinTest.exe 2> /home/pi/Desktop/error.txt> / home / pi / Desktop / log.txt «&

Имейте в виду, все это должно быть на одной линии! Он должен выводить весь вывод самого процесса в log.txt и возможные ошибки в error.txt. Я загрузил PI2 — ничего. Но, о чудо, на рабочий стол выскочили два файла, error.txt и log.txt. Так что, по крайней мере,  что-то  бежало. Первый был пуст (да, ошибок нет!), А второй содержал только ожидаемый текст: «Нажмите Enter, чтобы выйти». Так почему я получил «Эта страница не может быть отображена»

Друзья мои, оказывается, что то, что работает, когда вы запускаете его как пользователь, очевидно, не работает, когда вы запускаете его в фоновом режиме. Видимо, хотя Console.ReadLine должен остановить это — он этого не делает.

Единственное, что мне пришлось изменить, — это код .NET.

Вместо этого куска кода, который все пишут в примерах OWIN,

static void Main(string[] args)
{
  const string baseUrl = "http://*:5000";
  using (WebApp.Start<Startup>(baseUrl))
  {
    Console.WriteLine("Press Enter to quit.");
    Console.ReadKey();
  }
}

Я написал этот очень наивный кусок кода

static void Main(string[] args)
{
  const string baseUrl = "http://*:5000";
  using (WebApp.Start(baseUrl))
  {
    while(true)
    {
      Console.WriteLine("Waiting...");
      Thread.Sleep(2000);
    }
  }
}

И поистине, поистине, теперь каждые две секунды мой файл «log.txt» получал новую строку, и я действительно мог получить доступ к веб-сайту, работающему на моем PI.

образ

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

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

Заключительная мысль: если вы развернете это, вы, возможно, захотите удалить перенаправления журналов (так как вам не понравится иметь очень большой файл на рабочем столе, просто говоря «Ожидание…» множество раз), и вы можете захотеть установить поток. Спите до более высокого значения, поэтому сохраняйте (минутный бит) циклы ЦП.

Отказ от ответственности: никакие PI2 не пострадали для этой статьи, или были вынуждены перезагрузиться со вспышкой, где была сделана фотография;)