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

相关文章

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操