首页 > 编程语言 >asp.net 托管服务 后台任务 定时器任务

asp.net 托管服务 后台任务 定时器任务

时间:2024-02-12 16:22:59浏览次数:46  
标签:builder asp 服务 app 托管 public net logger 后台任务

托管服务1\1.txt

this is a test file 

托管服务1\appsettings.Development.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  }
}

托管服务1\appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}

托管服务1\DemoBgService.cs


public class DemoBgService : BackgroundService
{
	private ILogger<DemoBgService> logger;
	private Timer? timer; // 定义一个定时器字段

	public DemoBgService(ILogger<DemoBgService> logger)
	{
		this.logger = logger;
	}

	protected override async Task ExecuteAsync(CancellationToken stoppingToken)
	{
		// 创建一个定时器,指定回调方法,延迟 5 秒开始,每隔 2 秒执行一次
		timer = new Timer(ReadFile!, null, 5000, 2000);
	}

	// 定义一个回调方法,用于读取文件并记录日志
	private async void ReadFile(object state)
	{
		logger.LogInformation($"{DateTime.Now}");
	}

	public override void Dispose()
	{
		base.Dispose();
		// 释放定时器资源
		timer.Dispose();
	}

}




托管服务1\Program.cs

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddHostedService<DemoBgService>();


var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();



托管服务1\WeatherForecast.cs

namespace 托管服务1
{
    public class WeatherForecast
    {
        public DateTime Date { get; set; }

        public int TemperatureC { get; set; }

        public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);

        public string? Summary { get; set; }
    }
}

托管服务1\托管服务1.csproj

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
  </ItemGroup>

</Project>

托管服务1\Controllers\WeatherForecastController.cs

using Microsoft.AspNetCore.Mvc;

namespace 托管服务1.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }
}

标签:builder,asp,服务,app,托管,public,net,logger,后台任务
From: https://www.cnblogs.com/zhuoss/p/18013954

相关文章

  • .NET(C#)遍历(for,foreach,while)字典(Dictionary)的几种方法
    ​ .NET(C#)中,Dictionary<TKey,TValue>是一种非常实用的集合类型,用于存储键值对的集合。遍历Dictionary的方法有多种,包括使用for循环、foreach循环和while循环。使用foreach循环是遍历Dictionary中所有键值对最常见和最简单的方法。for和while循环在遍历Dic......
  • 在k8S中,Kubernetes 准入机制是什么?
    在Kubernetes(k8s)中,准入控制机制(AdmissionControl)是一个关键的安全和策略执行层。它位于APIServer层级,在接收到对集群资源的创建、更新或删除请求后、但实际操作存储在etcd中的数据之前的一个环节。准入控制器是一系列插件式的组件,它们会对发送到APIServer的每个请求进行拦截和......
  • 安装netperf和perf
    这是一篇发疯随笔X.X我的环境是虚拟机debian12,出于种种原因,之前直接使用apt-getinstallnetperfapt-getinstallperf指令直接安装,报错找不到包然后上网搜了一堆教程,有说下载netperf源码编译的,那些教程里面有的给的地址是netperf.org,但是!!这个网站根本上不去!!之后又搜了一些教......
  • [SWPU2019]Network
    [SWPU2019]Network附件是一个txt文件,打开看到都是些数字每一行都只有一个值,63,255,191等等,不难发现,这些值都为2的n次方减去一后的值,此处为TTL加密。TTL加密:简单来说就是,图中63,127,191,255转化为二进制的值分别为00111111,01111111,10111111,11111111。发现只有前两位不同,TTL加密就......
  • netflix conductor 停止维护
    就在23年的12月底,netflixconductor团队停止了对于conductor社区版的维护,同时github项目只读了目前社区有一个fork的conductor-oss(orkes团队维护,团队成员来自netflix),orkes属于一个企业级的conductor平台参考资料https://github.com/Netflix/conductorhttps://github.com......
  • NET 7 中使用Session
    NET7中使用Session2024年2月11日net7下测试通过Program.cs关键代码:builder.Services.AddDistributedMemoryCache();builder.Services.AddSession(options=>{options.IdleTimeout=TimeSpan.FromMinutes(30);options......
  • 抛弃Spring Cloud Gateway,得物 使用Netty架构100Wqps网关
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • 借助 .NET 开源库 Sdcb.DashScope 调用阿里云灵积通义千问 API
    在昨天的博文中,我们通过SemanticKernel调用了自己部署的通义千问开源大模型,但是自己部署通义千问对服务器的配置要求很高,即使使用抢占式按量实例,每次使用时启动服务器,使用完关闭服务器,也比较麻烦,而且越高级的大模型对服务器的配置越高。所以昨天的博文中使用了很低级的Qwen-7B......
  • 【译】.NET 8 网络改进(二)
    原文|Máňa,NataliaKondratyeva翻译|郑子铭修改HttpClient日志记录自定义(甚至简单地关闭)HttpClientFactory日志记录是长期请求的功能之一(dotnet/runtime#77312)。旧日志记录概述HttpClientFactory添加的默认(“旧”)日志记录非常详细,每个请求发出8条日志消息:使......
  • 【.NET】聊聊 IChangeToken 接口
    由于两个月的奋战,导致很久没更新了。就是上回老周说的那个产线和机械手搬货的项目,好不容易等到工厂放假了,我就偷偷乐了。当然也过年了,老周先给大伙伴们拜年了,P话不多讲,就祝大家身体健康、生活愉快。其实生活和健康是密不可分的,想活得好,就得健康。包括身体健康、思想健康、心理健康......