Вдохновленный гудением, охватившим сообщество 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 не пострадали для этой статьи, или были вынуждены перезагрузиться со вспышкой, где была сделана фотография;)