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

相关文章

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。