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

2024-01-17 12:36

本文主要是介绍.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 ),您应该看到:

这篇关于.Net 8.0 Web API Controllers 添加到 windows 服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616064

相关文章

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结