Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET Core
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для Midian
605 / 387 / 198
Регистрация: 31.03.2013
Сообщений: 2,687

Запуск веб апи как службы в Windows 10

06.10.2023, 21:30. Показов 1265. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, создал проект на .NET 7 ASP Core, посмотрел мануал в инете как сделать чтобы он был как служба, скомпилировал, установил службу и стартанул ее, но достучаться к контроллеру не могу, когда запускаю в самой студии в дебаге, то сервис стартует и доступ из браузера к нему есть, прилагаю конфиги:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<Project Sdk="Microsoft.NET.Sdk.Web">
 
  <PropertyGroup>
    <TargetFramework>net7.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <PackageOutputPath />
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
    <LangVersion>latest</LangVersion>
    <OutputType>WinExe</OutputType>
    <DisableWinExeOutputInference>true</DisableWinExeOutputInference>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <OutputPath>..\bin\Debug\HrScannerService\</OutputPath>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <OutputPath>..\bin\Release\HrScannerService\</OutputPath>
  </PropertyGroup>
 
  <ItemGroup>
    <PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting.WindowsServices" Version="7.0.11" />
    <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.11" />
    <PackageReference Include="Microsoft.AspNetCore.SignalR.Client.Core" Version="7.0.11" />
    <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="7.0.1" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
    <PackageReference Include="NLog" Version="5.2.4" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
    <PackageReference Include="System.Drawing.Common" Version="7.0.0" />
  </ItemGroup>
 
  <ItemGroup>
    <ProjectReference Include="..\HrScanner.Core\HrScanner.Core.csproj">
      <Private></Private>
    </ProjectReference>
    <ProjectReference Include="..\HrScanner.Device\HrScanner.Device.csproj">
      <Private></Private>
    </ProjectReference>
    <ProjectReference Include="..\HrScanner.Infra\HrScanner.Infra.csproj">
      <Private></Private>
    </ProjectReference>
    <ProjectReference Include="..\HrScanner.ProcMgr\HrScanner.ProcMgr.csproj">
      <Private></Private>
    </ProjectReference>
  </ItemGroup>
 
  <Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <Exec Command="SET buildPath=&quot;$(SolutionDir)..\build\$(Configuration)\HrScannerService\&quot;&#xD;&#xA;&#xD;&#xA;if not exist $(TargetDir)x64 mkdir $(TargetDir)x64&#xD;&#xA;if not exist $(TargetDir)x64 mkdir $(TargetDir)x86&#xD;&#xA;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\*.dll&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\*.exe&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\RegulaReaderEOS\*.dll&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\EDSDK\*.dll&quot; &quot;$(TargetDir)x64\*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\DustMatrixCorrectionDll\*.dll&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\FFmpeg\*.exe&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\RawToJpgFlip\*.exe&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\Bracketing\*.exe&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\Calibration\*.*&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\ColorCompensation\*.*&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\Fuji\*.*&quot; &quot;$(TargetDir)x64\*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\ThreeDiVisDll\*.*&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\ExifTool\*.exe&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\ProcMgr\*.*&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\Secure\*.dll&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\RegulaReaderFX\*.dll&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\OpenCvDlls\x64\*.dll&quot; &quot;$(TargetDir)x64\*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\OpenCvDlls\x86\*.dll&quot; &quot;$(TargetDir)x86\*.*&quot;&#xD;&#xA;copy &quot;$(SolutionDir)..\extBin\OpenH264\*.dll&quot; &quot;$(TargetDir)*.*&quot;&#xD;&#xA;&#xD;&#xA;mkdir &quot;%25buildPath%25&quot;&#xD;&#xA;&#xD;&#xA;copy &quot;$(TargetDir)*.*&quot; &quot;%25buildPath%25&quot;&#xD;&#xA;&#xD;&#xA;C:\Windows\System32\xcopy &quot;$(TargetDir)ru&quot; &quot;%25buildPath%25ru&quot; /s /i /y&#xD;&#xA;C:\Windows\System32\xcopy &quot;$(TargetDir)x86&quot; &quot;%25buildPath%25x86&quot; /s /i /y&#xD;&#xA;C:\Windows\System32\xcopy &quot;$(TargetDir)x64&quot; &quot;%25buildPath%25x64&quot; /s /i /y" />
  </Target>
</Project>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using HrScanner.Core.Consts;
using HrScanner.Core.Model;
using HrScanner.WebApi.Model;
using HrScanner.WebApi.Model.Abstract;
using HrScanner.WebApi.SignalR;
 
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseWindowsService();
builder.Services.AddWindowsService();
 
// Add services to the container.
builder.Services.AddSingleton<IHrScannerService, HrScannerService>();
builder.Services.AddControllers();
builder.Services.AddSignalR();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
 
var app = builder.Build();
 
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}
 
app.UseHttpsRedirection();
 
app.UseAuthorization();
 
app.MapControllers();
 
app.MapHub<HrScannerHub>("/HrScannerHub");
 
new BroadcastServer(Ports.ListenerPort).StartListening();
 
app.Run();
XML
1
sc.exe create WebService binpath=MayPathToEXE start=auto
В чем может быть проблема и как заставить его работать как сервис? Сам сервис стартует и висит в службах и показывает что запущен, но на https запросы не реагирует

Добавлено через 2 часа 50 минут
Добавил NLOG, добавил в каждый конструктор создание логов, из под сервиса получается что не стартуют контроллеры, добавил логирование еще одно, тоже не запускается из под службы, когда запускаю из под дебага в студии то логи пишутся, такое ощущение что сама служба стартует, а веб сервис нет, по netstat -a не вижу чтобы на моем порту висел сервис, короч лажа какая-то непонятная

Добавлено через 31 минуту
Запустил просто .exe из папки, логи появились и странно, он запустился почему-то на http и на порту 5000, хоотя у меня в конфигурации был https и порт 31302 в дебаге он так и заупскается, буду разбираться в общем с конфигами, какая-то лажа

Добавлено через 28 минут
В общем проблема решилась таким образом:
C#
1
2
3
4
5
6
7
8
builder.WebHost.ConfigureKestrel((context, options) =>
{
    options.ListenAnyIP(31302);
    options.ConfigureEndpointDefaults(endpointOptions =>
    {
        endpointOptions.UseHttps("path-to-certificate.pfx", "certificate-password");
    });
});
тот конфиг что был с портами и url, он оказывается работает только для дебага, а для релиза и паблиша нужно писать ручками такой код короч, мб кому пригодится
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.10.2023, 21:30
Ответы с готовыми решениями:

В чем разница между созданием асинхронных методов веб-службы и асинхронным вызовом синхронного метода веб-службы
Почитал msdn и Matthew MacDonald и возник следующий вопрос. В чем разница, между созданием асинхронных методов веб-службы и асинхронным...

Создание и запуск службы Windows
Помогите разобраться с созданием и запуском службы Windows. К примеру: у меня есть библиотека «Test.dll» со следующим кодом: using...

Запуск службы Windows с параметрами
Здравствуйте, есть у меня мною написана и установлена служба. Мне нужно программно вызвать OnStart(string args) у этой службы и не один...

5
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
06.10.2023, 23:03
Цитата Сообщение от Midian Посмотреть сообщение
хоотя у меня в конфигурации был https и порт 31302
В какой конфигурации?
0
Эксперт .NET
 Аватар для Usaga
14088 / 9306 / 1348
Регистрация: 21.01.2016
Сообщений: 34,955
07.10.2023, 02:54
Midian, зачем как службу? Почему не в IIS, как веб приложение?
0
 Аватар для Midian
605 / 387 / 198
Регистрация: 31.03.2013
Сообщений: 2,687
07.10.2023, 08:26  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
зачем как службу? Почему не в IIS, как веб приложение?
будет инсталлятор, который положит на С диск сервис и пропишет его как службу и стартанет, с IIS думаю больше волокиты будет заскриптовать такое, сервис будет разворачиваться на обычном ПК, не на сервере
Цитата Сообщение от nicolas2008 Посмотреть сообщение
В какой конфигурации?
да обычный конфиг, он оказывается только для дебага я ж не знал
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
07.10.2023, 13:07
Midian, если launchSettings.json то да, это чисто для Visual Studio
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
09.10.2023, 01:06
Цитата Сообщение от Midian Посмотреть сообщение
а для релиза и паблиша нужно писать ручками такой код
Можно и в конфиге прописать:
JSON
1
2
3
4
5
6
7
8
9
10
11
{
    "Urls": "https://+:31302",
    "Kestrel": {
        "Certificates": {
            "Default": {
                "Path": "path-to-certificate.pfx",
                "KeyPath": "path-to-key.key"
            }
        }
    }
}
Цитата Сообщение от Midian Посмотреть сообщение
C#
1
"certificate-password"
Прописывать в коде ключ/пароль сертификата — ататат!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.10.2023, 01:06
Помогаю со студенческими работами здесь

Запуск/останов службы Windows
И снова здравствуйте. Не могу запустить службу. Она ничего не делает. Просто хочется ее запустить и остановить. Часть кода взял с чужого...

Запуск .bat файла из Windows службы
Нужно запустить .bat файл из службы. Пробовал как запускать напрямую с помощью Process.Start(@&quot;C:\MyService\newip.bat&quot;); Так...

Запуск cmd.exe из службы Windows 7, 8
Доброго времени суток! Задача тривиальная: есть файл, который нужно контролировать. Если он меняется (содержимое, права доступа,...

Запуск windows службы. Выдается ошибка.
Прочел в книге А. Гарнаева о создании служб в 2003 студии. в vs 2005 сделал по аналогии: 1. Imports System.IO Imports...

Ошибка в работе службы веб-публикаций на Windows 2000 Pro.
Служба веб публикаций не запускается, выдавая ошибку 1747, неизвестная служба проверки подлинности. Что это???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru