Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7
Последнее обновление: 12.06.2018
ASP.NET Core можно развертывать в виде обычной службы Windows без каких-либо веб-серверов, в частности, IIS.
Создадим новый проект ASP.NET Core 2.1 любого типа. Прежде всего, нам надо добавить в проект через Nuget пакет Microsoft.AspNetCore.Hosting.WindowsServices .
После создания проекта обратимся к файлу Program.cs , который во всех проектах выглядит идентично:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; namespace ServiceHostingApp < public class Program < public static void Main(string[] args) < CreateWebHostBuilder(args).Build().Run(); >public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup(); > >
Изменим его следующим образом:
Установка MySQL 8 на Windows 10 – пошаговая инструкция для начинающих
using System.Diagnostics; using System.IO; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting.WindowsServices; namespace ServiceHostingApp < public class Program < public static void Main(string[] args) < // получаем путь к файлу var pathToExe = Process.GetCurrentProcess().MainModule.FileName; // путь к каталогу проекта var pathToContentRoot = Path.GetDirectoryName(pathToExe); // создаем хост var host = WebHost.CreateDefaultBuilder(args) .UseContentRoot(pathToContentRoot) .UseStartup() .Build(); // запускаем в виде службы host.RunAsService(); > > >
Чтобы запустить приложение в виде службы у объекта IWebHost вызывается метод RunAsService() .
Публикация
Теперь нам надо опубликовать приложение в файловой системе. Мы можем это сделать через консоль с помощью команды dotnet publish . Для этого вначале в командной строке/терминале надо перейти к папке проекта и из нее запустить команду:
dotnet publish —configuration Release —runtime win10-x64 —output c:myapp
Поскольку приложение будет устанавливаться в виде службы Windows и должно иметь исполняемый файл, то указывается параметр —runtime . В данном случае служба будет устанавливаться на Windows 10 с 64-битной архитектурой. Поэтому для этого параметра указано значение win10-x64 .
Параметр —output указывает, где будет опубликовано приложение — то есть в данном случае в папке c:myapp .

Также можно поизвести публикацию с помощью графических средств в Visual Studio.
Создание службы
После публикации с помощью консольной утилиты sc.exe создадим службу:
sc create НАЗВАНИЕ_СЛУЖБЫ binPath= «ПУТЬ К ИСПОЛНЯЕМОМУ ФАЙЛУ EXE»
После команды create указывается имя службы. Службу можно назвать как угодно.
Установка и настройка Microsoft SQL Server 2019 + Management Studio
Параметр binPath указывает на путь к исполняемому файлу (в том числе имя самого файла). Причем между знаком равно и путем к файлу в кавычках должен идти пробел.
Например, ранее приложение было опубликовано в папке c:myapp. Как правило, название исполняемого файла соответствует названию проекта, то есть в моем случае в папке c:myapp после публикации находится исполняемый файл ServiceHostingApp.exe . И, допустим, служба буде называться MyAspService. В этом случае команда на создание службы будет выглядеть следующим образом:
sc create MyAspService binPath= «c:myappservicehostingapp.exe»

Запуск службы
После установки службы запустим ее с помощью команды:
sc start MyAspService
Команде start передается имя ранее установленной службы — в моем случае это MyAspService.
Источник: metanit.com
Установка приложения node.js как службу в windows

Допустим у вас есть приложение на node.js и вам нужно разместить его на ПК c Windows Server или на ПК с Windows. При этом приложение должно перезапускаться при перезагрузке компьютера. В моем случае задача состояла в размещении клиент — серверного приложения — склад на node.js на один из компьютеров в локальной сети.
Для решения задачи я использовал библиотеку node-windows, которая может использоваться для запуска и остановки приложений в качестве фоновых служб Windows.
Для примера создадим простое приложение — сервер с использованием библиотеки express, которое отправляет текст «Hello World» на страницу браузера по маршруту http://localhost:3000/
const express = require(‘express’) const app = express() const port = 3000 app.get(‘/’, (req, res) => res.send(‘Hello World!’)) app.listen(port, () => console.log(`Example app listening at http://localhost:$`))
Чтобы установить библиотеку node-windows, набираем в консоли, в папке нашего приложения:
npm install -g node-windows npm link node-windows
Библиотека установится глобально, поэтому если вам нужно запустить другое приложение, достаточно набрать только вторую строчку.
Далее нам нужно создать два файла: для запуска и для остановки службы, например start-service.js и stop-service.js и разместить их в одной папке с файлом приложения.
Пишем код для файла запуска службы start-service.js
var Service = require(‘node-windows’).Service; // Создаем новый объект службы var svc = new Service(< name:’Node application as Windows Service’, description: ‘Node application as Windows Service’, script: ‘C:\nodeapp\app.js’, // путь к приложению >); // Слушаем событие ‘install’ и запускаем службу svc.on(‘install’,function()< svc.start(); >); // Устанавливаем службу svc.install();
Пишем код для файла остановки службы stop-service.js
var Service = require(‘node-windows’).Service; // Создаем новый объект службы var svc = new Service(< name:’Node application as Windows Service’, description: ‘Node application as Windows Service’, script: ‘C:\nodeapp\app.js’, // путь к приложению >); // Слушаем событие ‘uninstall’, пишем сообщение svc.on(‘uninstall’,function()< console.log(‘Uninstall complete.’); console.log(‘The service exists: ‘,svc.exists); >); // Удаляем службу svc.uninstall();
Чтобы запустить службу, набираем в консоли:
$ node start-service.js
Чтобы остановить службу, набираем в консоли:
$ node stop-service.js
Библиотека node-windows создает папку daemon с исполняемыми файлами. Теперь, если нужно можно удалить исходные файлы приложения. Однако если приложение использует какие-то внешние файлы или папки, их нужно оставить. В моем случае я удалил все файлы, кроме папки c загружаемыми файлами uploads, папки public с фронтэндом (css, js, и др.), а также папки views c html шаблонами.
Желаю всем успешного развертывания!
Источник: lentaputi.ru
Могу ли я создать службу Windows и как это сделать?

Иногда вам нужно приложение или скрипт, чтобы продолжать работать вне зависимости от того, авторизованы вы на своем компьютере или нет. Может быть, это сценарий PowerShell для мониторинга портов или веб-сервер, на котором размещена страница в вашей домашней сети.
Дело в том, что если вы хотите, чтобы процесс, сценарий или программа выполнялись, пока компьютер включен, вам необходимо создать службу Windows.
Что мне нужно для создания службы Windows?
Чтобы создать службу Windows в Windows 10, необходимо выполнить несколько предварительных условий:
- Доступ администратора на компьютере
- Что-то для запуска в качестве службы (сценарий PowerShell, программа и т.д.)
- Установлен Non-Sucking Service Manager (NSSM)
Что такое менеджер службы без присасывания?
Да, вы не можете отказаться от такого имени, не объяснив его. Конечно, название неудачное, но оно точное. Диспетчер служб Non-Sucking (NSSM), пожалуй, самый простой способ создать службу Windows, которая будет одновременно высоконадежной и настраиваемой. Кроме того, это бесплатное программное обеспечение с открытым исходным кодом (OSS).

NSSM можно использовать через командную строку Windows или графический интерфейс пользователя (GUI). Это означает, что им может пользоваться каждый. NSSM можно использовать в любой версии Windows, начиная с Windows 2000 включительно. Существуют 32-битные и 64-битные версии. Если вы используете 64-битный компьютер, сначала попробуйте эту версию.
Если это не сработает, вернитесь к 32-битной версии.
Вы можете скачать NSSM с веб-сайта, клонировать NSSM из Git или установить NSSM с помощью Chocolatey. Chocolatey — это менеджер пакетов для Windows. Способы установки будут зависеть от выбранного вами маршрута. См. Инструкции NSSM. В нашем примере мы загружаем с веб-сайта NSSM и устанавливаем его в C:WINDOWSsystem32 .
Создание службы Windows с помощью NSSM
В этом примере мы создадим службу из сценария PowerShell для регистрации среднего процента загрузки ЦП.
- Скопируйте и сохраните этот сценарий как log-CPULoadPercentage.ps1 в месте, которое вряд ли будет доступно для кого-либо еще. Попробуйте создать каталог C:/Scripts и сохранить его там. Кроме того, создайте папку в скриптах под названием Logs. Обратите внимание, что путь к сценарию — C:/Scripts/log-CPULoadPercentage.ps1 . Это понадобится вам позже.
Примечание. Все строки ниже, за которыми следует символ #, являются комментариями и не влияют на сценарий.
- Это можно сделать либо в командной строке Windows, либо в PowerShell. Откройте его как администратор.
- Введите команду nssm install logCPUAvg и запустите ее. Откроется окно установщика службы NSSM.

- Нажмите кнопку с многоточием рядом с полем «Путь:» и перейдите к файлу powershell.exe, который обычно находится в папке C:WindowsSystem32 . Выберите powershell.exe. Путь: и каталог запуска: поля будут автоматически заполнены.

- Введите следующее в Arguments: поле: -ExecutionPolicy Bypass -NoProfile -File «C:PathToScriptget-Script.ps1» , где последняя часть является путь к PowerShell сценария и имени сценария.

- Выберите вкладку Details. Введите то, что вы хотите, чтобы служба отображалась, как в диспетчере служб Windows, в поле Отображаемое имя:. Затем введите, что он делает, в поле Описание:. Тип запуска: может быть установлен как автоматический, автоматический (отложенный запуск), ручной или отключенный. Для этого упражнения подходит автоматический режим.

- Выберите вкладку Вход в систему. Установите переключатель «Эта учетная запись:» и введите учетную запись и пароль, от имени которых будет работать служба. Вам нужно будет выбрать учетную запись, под которой будет работать служба. В идеале у вас должна быть учетная запись Windows, созданная только для запуска этой службы. Разрешения этой учетной записи должны быть ограничены только тем, что нужно делать службе. Вы можете выбрать локальную системную учетную запись , но это не рекомендуется по соображениям безопасности.
Есть несколько других вкладок, которые можно использовать для настройки службы. Для этого упражнения достаточно значений по умолчанию на этих вкладках. Нажмите кнопку Установить службу.
- Когда служба будет установлена, вы увидите, что служба «logCPUAvg» успешно установлена! окно. Выберите ОК, чтобы закрыть его. На этом установка завершена.

- Откройте диспетчер служб Windows и убедитесь, что служба существует.

- Запустите службу, чтобы убедиться, что она будет работать.

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

Удаление службы Windows с помощью NSSM
Возможно, вам больше не нужно следить за загрузкой процессора, поэтому вы хотите избавиться от службы. К счастью, NSSM упрощает это.
- В диспетчере служб Windows остановите службу. Сделайте это, выбрав службу «Журнал средней загрузки ЦП», а затем либо нажав квадратную кнопку остановки на панели инструментов, либо ссылку «Остановить службу» слева.

- Откройте командную строку Windows или PowerShell от имени администратора.
- Введите команду nssm remove logCPUAvg и выполните команду.

- NSSM попросит вас подтвердить. Выберите Да .

- Когда служба будет удалена, вы увидите, что служба «logCPUAvg» успешно удалена! Подтверждение. Выберите ОК, и все готово.

Вот и все. Рекомендуется проверить диспетчер служб, чтобы убедиться, что службы больше нет. Если вы все еще видите службу, возможно, вам нужно обновить экран, и он должен исчезнуть.
Службы — отличный способ запускать приложения или скрипты, которые должны запускаться постоянно, перезапускаться в случае сбоя или требовать привилегий, отличных от текущего пользователя. Если вам не нужно ваше приложение или сценарий для выполнения всех этих задач, рассмотрите возможность использования запланированной задачи.
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
Источник: ip-calculator.ru