ASP.NET Core获取已经在Startup.cs中注册的服务实例

2024-06-10 10:32

本文主要是介绍ASP.NET Core获取已经在Startup.cs中注册的服务实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

新版本.NET5参考代码

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WebNetCore5_Img_Storage.BLL;
using WebNetCore5_Img_Storage.IBLL;
using WebNetCore5_Img_Storage.Model.Tool;namespace WebNetCore5_Img_Storage
{public class Program{public static void Main(string[] args){        //可以吧IHost设置为公共的静态变量,存放起来,其他地方也可以调用   //CreateHostBuilder(args).Build().Run();IHost host = CreateHostBuilder(args).Build();//从容器中获取已经注册的IUploadFileRecordBLL//先读取最近上传图片缓存起来,1000条,方便快速预览图片,减小延迟IUploadFileRecordBLL uploadFileRecordBLL = (IUploadFileRecordBLL)host.Services.GetService(typeof(IUploadFileRecordBLL));var task = uploadFileRecordBLL.PageAsync(new Model.Upload_file_record() { Buncket = minio_img_bucket }, 1, 1000);task.Wait();var page = task.Result;if (page.Total > 0){foreach (var item in page.List){Task.Run(async () =>{           //图片预览地址string imgURL =await MinioHandle.GetImgSignedUrl(item.Server_port,item.Buncket, item.File_name);System.Net.WebClient webClient = new System.Net.WebClient();byte[] buffe = await webClient.DownloadDataTaskAsync(imgURL);System.Runtime.Caching.MemoryCache.Default.Set("Orig"+item.Id, buffe, DateTime.UtcNow.AddDays(7));LogHelpter.AddLog("程序启动生成的图片原生字节缓存 "+ item.Id);});}}//启动网站host.Run();}public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{//webBuilder.Limits.MinResponseDataRate = null;//webBuilder.UseIIS().UseStartup<Startup>();webBuilder.UseStartup<Startup>();});}
}

老版本.NET Core3

//Startup.cs中IServiceProvider
public void ConfigureServices(IServiceCollection services)
{string sqlConnection = "连接字符串";	 services.AddDbContext<DataContext>(option => option.UseSqlServer(sqlConnection));services.AddScoped<IGroupChartsRepository, GroupChartsRepository>();services.AddScoped<ICombinationGroupChartsRepository, CombinationGroupChartsRepository>();services.AddScoped<ILogRepository, LogRepository>();
}//获取已经注册的实例,比如在public class ExceptionFilter : IExceptionFilter这个类中获取
IWebHost host = Program.BuildWebHost(null);                   
IServiceScope scope = host.Services.CreateScope();
ILogRepository _logRepository = scope.ServiceProvider.GetService<ILogRepository>();
DataContext _dataContext = scope.ServiceProvider.GetService<DataContext>();
//处理业务逻辑,比如新增记录
Log log = new Log();
_logRepository.Add(log);
string dateTime = DateTime.Now.AddDays(-5).ToString("yyyy-MM-dd");
int count = _dataContext.Database.ExecuteSqlCommand("delete from Log where  CONVERT(varchar(30), CreateTime, 23)<@date", new SqlParameter("date", dateTime));scope.Dispose();

这篇关于ASP.NET Core获取已经在Startup.cs中注册的服务实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa