.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 ),您应该看到:

相关推荐

  1. powershell远程拷贝文件windows 服务器

    2024-01-18 04:48:03       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 04:48:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 04:48:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 04:48:03       82 阅读
  4. Python语言-面向对象

    2024-01-18 04:48:03       91 阅读

热门阅读

  1. uniapp——自定义导航栏的封装

    2024-01-18 04:48:03       61 阅读
  2. 优化ansible执行playbook速度

    2024-01-18 04:48:03       44 阅读
  3. 在FFmpeg源码下增加自定义程序

    2024-01-18 04:48:03       44 阅读
  4. 菜鸟C语言实例

    2024-01-18 04:48:03       60 阅读
  5. 【Leetcode】269.火星词典(Hard)

    2024-01-18 04:48:03       50 阅读
  6. Unity面试笔记:Unity常见关键词概念

    2024-01-18 04:48:03       48 阅读
  7. go语言GMP模式介绍以及协程案例展示

    2024-01-18 04:48:03       50 阅读