.Net 8.0 Web API Controllers 添加到 windows 服务

示例源码下载:https://download.csdn.net/download/hefeng_aspnet/88747022

创建 Windows 服务的方法之一是从工作线程服务模板开始。

但是,如果您希望能够让它托管 API 控制器(也许是为了查看它正在运行的进程的状态),您将需要添加并进行一些更改。在这里我将展示如何做到这一点。请注意,我使用的是 .NET 8。

我们需要以下内容才能创建 Windows 服务

创建项目后,添加Microsoft.Extensions.Hosting.WindowsServices NuGet 包,用于将其部署为 Windows 服务。

添加到 Program.cs 行:
builder.Services.AddWindowsService();

现在我们将继续添加对控制器的支持。

添加 NuGet 包Microsoft.AspNetCore.OpenApi

在Program.cs中,您将添加
using Microsoft.AspNetCore.Builder;
现在替换
var builder = Host.CreateApplicationBuilder(args);

var builder = WebApplication.CreateBuilder(args);
并添加
builder.Services.AddControllers();

host.MapControllers();

我们现在将添加一个控制器。创建一个名为Controllers的文件夹。在里面创建一个名为MyController.cs的文件,其中包含以下代码:

using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace MyWorkerService.Controllers;
[Route("[controller]")]
[ApiController]
public class MyController : ControllerBase
{[HttpGet]public ContentResult Get(){string someContent = "Some Content";return new ContentResult{Content = someContent,ContentType = "text/html"};}
}

 运行应用程序。您应该看到一个终端窗口,显示以下内容:

在浏览器中访问http://localhost:5000/my,您应该看到以下内容:

在 Windows 上作为服务发布和安装
右键单击该项目并选择“发布...”

在弹出窗口中,选择“文件夹”,然后按“下一步”、 “完成并关闭”

下一步按发布

以管理员身份打开终端窗口并执行以下命令(我的项目的路径是 T:\MyWorkerService 但您的项目会有所不同,因此请相应更改):

sc.exe create "My Worker Service" binpath="T:\MyWorkerService\bin\Release\net8.0\publish\MyWorkerService.exe"

您应该看到[SC] CreateService SUCCESS

在 Windows 中打开“服务”应用程序,您应该会在那里看到它。

右键单击并选择开始。

浏览到http://localhost:5000/my以确保它正在运行。

要卸载在终端 sc.exe 中运行的服务,请删除“My Worker Service”

只需执行sc.exe即可查看所有选项。

在 appsettings.json 中定义端点

{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://*:1234"
      }
    }
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  }
}

添加Swagger
添加NuGet包Swashbuckle.AspNetCore

 在Program.cs中添加

// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();// Configure the HTTP request pipeline.
if (host.Environment.IsDevelopment())
{host.UseSwagger();host.UseSwaggerUI();
}

运行项目并浏览到http://localhost:5000/swagger/index.html(如果更改了 appsettings.json 中的端口,则浏览到http://localhost:1234/swagger/index.html ),您应该看到:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出Spring AOP

第1章:引言 大家好,我是小黑,咱们今天要聊的是Java中Spring框架的AOP(面向切面编程)。对于程序员来说,理解AOP对于掌握Spring框架来说是超级关键的。它像是魔法一样,能让咱们在不改变原有代码的…

git基础知识

简述 git 的安装配置、工作区域划分、文件类型、基本命令。 基础安装与配置 基于 WSL 的 Ubuntu 下的 git 打开或关闭Windows功能->Hyper-V、Virtual Machine Platform、Windows Subsystem for Linux # 1.必须运行 Windows 10 版本 2004 及更高版本(内部版本 …

matplotlib绘制动态瀑布图

绘制瀑布图思路:遍历指定文件目录下所有的csv文件,每读一个文件,取文件前20行数据进行保存,如果超过规定的行数300行,将最旧的数据删除,仅保留300行数据进行展示。 网上找的大部分绘制瀑布图的代码&#x…

Visual Studio 2022 成功配置QT5.12.10

目录 下载并安装Visual Studio 2022 Qt5.12.10下载 Qt5.12.10安装 Qt VS Tools for Visual Studio 2022下载 Visual Studio 2022配置 测试 下载并安装Visual Studio 2022 下载社区版并安装,这个比较快。 Qt5.12.10下载 官网下载很慢,还不如百度网…

LLM:Training Compute-Optimal Large Language Models

论文:https://arxiv.org/pdf/2203.15556.pdf 发表:2022 前文回顾: OpenAI在2020年提出《Scaling Laws for Neural Language Models》:Scaling Laws(缩放法则)也一直影响了后续大模型的训练。其给出的结论是最佳计算效…

day20【LeetCode力扣】142.环形链表Ⅱ

day20【LeetCode力扣】142.环形链表Ⅱ 1.题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了…

STM32 TIM输出比较、PWM波形

单片机学习! 目录 一、输出比较简介 二、PWM简介 三、输出比较通道 3.1通用定时器的输出比较部分电路 3.2高级定时器的输出比较部分电路 四、输出模式控制器 五、PWM基本结构 六、PWM参数计算 总结 前言 文章讲述STM32定时器的输出比较功能,它主…

Windows Server 2019配置DNS服务器

正文共:1234 字 31 图,预估阅读时间:1 分钟 我们在给Windows Server添加角色和功能时,会发现有一项“远程桌面服务安装”,它的介绍为“为虚拟桌面基础结构(Virtual Desktop Infrastructure,VDI&…

Angular系列教程之MVC模式和MVVM模式

文章目录 MVC模式MVVM模式MVC与MVVM的区别Angular如何实现MVVM模式总结 在讨论Angular的时候,我们经常会听到MVC和MVVM这两种设计模式。这两种模式都是为了将用户界面(UI)和业务逻辑分离,使得代码更易于维护和扩展。在这篇文章中,我们将详细介…

介绍一个强大的免费开源.net反编译工具

dnSpy dnSpy 是一个用C#开发,开源的调试器和.NET 汇编编辑器。 即使您没有任何可用的源代码,也可以使用它来编辑和调试程序,并可以把代码导出成.net工程。

01 SpringBoot3快速入门

本次使用3.0.5版本 SpringBoot整合了之前的一切。 需求:浏览器发送/hello请求,返回"Hello,Spring Boot 3!" 总体开发步骤: 1. 创建Maven工程 2. 添加依赖(springboot父工程依赖 , web启动器依赖) 3. 编写启动引导类(springboot项…

速通——决策树(泰坦尼克号乘客生存预测案例)

一、决策树 1、概述 树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果 2、建立过程 1. 特征选择:选取有较强分类能力的特征。 2. 决策树生成:根据选择的特征生成决策树。 3.…

Gazebo的模型下载。

git clone zouxu634866/gazebo_modelshttps://gitee.com/zouxu6348660/gazebo_models.git,并完成路径配置。 (本文提供了gitee下载,国外的Github下载较慢。)

芯课堂 | 华芯微特MCU在PCB板级设计中对ISP引脚的应用

1.应用描述 ISP(In System Programming),在系统编程,使用片内驻留出厂引导程序(BootROM)配合UART / SPI等外设进行烧录。 华芯微特全系MCU的ISP操作说明:当芯片上电后检测到 ISP 引脚持续 5ms…

LLaMa2 Chat gpt 大模型本地部署初体验

一直想在自己电脑或者测试环境随便找台服务器尝试部署一下“大模型”,但“大模型”对于内存和GPU的要求令人望而却步,层出不穷的各种术语也令人困惑,有点难以下手。 经过一段时间,在百度千帆大模型平台、讯飞星火大模型平台、魔搭…

【数据结构】哈希表详解,举例说明 java中的 HashMap、HashTable及其区别

一、哈希表(Hash Table)简介: 哈希表是一种数据结构,用于实现字典或映射等抽象数据类型。它通过把关键字映射到表中的一个位置来实现快速的数据检索。哈希表的基本思想是利用哈希函数将关键字映射到数组的索引位置上,…

【征服redis2】redis的事务与lua

1.redis事务介绍 在前面我们介绍了redis的几种典型数据结构和应用,本文我们来看一下redis的事务问题。事务也是数据库的重要主题,熟悉关系型数据库的读者应该对事务比较了解,简单地说,事务表示一组动作,要么全部执行&…

esp32-idf Eclipse Log日志打印demo

Log日志打印demo 1、代码例程 esp32-S2 芯片 / Eclipse软件 开发环境 #include <stdio.h> #include "sdkconfig.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_system.h" #include "esp_…

【linux】终端发送网络请求与文件下载

发送网络请求 linux的终端中发送网络请求可以使用curl命令。 语法&#xff1a; curl [url] 但是他返回的是html代码&#xff0c;因为在终端中&#xff0c;他无法像浏览器中一样把访问到的html代码渲染成我们访问的页面&#xff0c;所以我们只能拿到他的源码。 访问CSDN - 专…

1.机器学习-机器学习算法分类概述

机器学习-机器学习算法分类概述 个人简介机器学习算法分类&#xff1a;监督学习、无监督学习、强化学习一监督学习1. 监督学习分类任务举例&#xff1a;1.1 特征1.2 标签 二无监督学习1.关键特点2.应用示例3.常见的无监督学习算法 三强化学习1.定义2.示例场景 四机器学习开发流…