.NET Core 项目经验总结:Startup.cs 介绍(二)
原文地址(个人博客):http://www.gitblogs.com/Blogs/Details?id=643c9664-dc4e-42cf-a15f-5368ebfcd7c9
第一次面对 Startup.cs 往往无从下手,本文记录在项目中的经验,不会涉入到内部的代码实现以及相关的原理。
项目初始化完成startup.cs的原貌:

ConfigureServices: 将服务注入到容器中 比如:第三方组件
Configuere:配置http请求管道 ,比如:session,cookie
读取配置信息
.Net Core 使用appsetting.json 存储配置信息,如图:

在文件中,增加了数据库配置信息,怎么读取呢?
public void ConfigureServices(IServiceCollection services)
{
string connectionString = Configuration.GetSection("ConnectionStrings").GetSection("DefaultConnection").Value;
string providerMame = Configuration.GetSection("ConnectionStrings").GetSection("ProviderName").Value;
services.AddMvc();
}
Configuration.GetSection("节点名称").GetSection("子节点名称").Value
这只是读取配置的一种方式,还有通过类映射配置信息方式,在以后的章节中详细描述
依赖注入
依赖注入在 ASP.NET Core 中无处不存在,在之前打印参数的例子中同样用到。依赖注入好处都有啥?为什么我们需要依赖注入?在 很好地解释了:
对于控制器,我们有三种方式注入对象:构造函数、控制器动作、属性注入。然而,在一般的类中,使用自带的 DI 只能是构造函数注入。到底是哪种方式好,见仁见智。
ASP.NET Core 服务可以被配置为以下生命周期:
瞬时(Transient)在它们每次请求时都会被创建。这一生命周期适合轻量级的,无状态的服务。
作用域 (Scoped)在每次请求中只创建一次。
单例(Singleton)在它们第一次被请求时创建(或者如果你在 ConfigureServices运行时指定一个实例)并且每个后续请求将使用相同的实例。
public void ConfigureServices(IServiceCollection services)
{
...依赖注入代码
services.AddMvc();
}
.Net Core 使用Session
.Net Core里使用Session需要添加Session类库,项目上基于NuGet添加:Microsoft.AspNetCore.Session。
在startup.cs找到方法ConfigureServices(IServiceCollection services) 注入Session:
services.AddSession();
接下来我们要告诉Asp.net Core使用内存存储Session数据,在Configure(IApplicationBuilder app,...):
app.UseSession();
在Controller中使用

.Net Core 使用Cache
说到内存缓存大家可能立马想到了HttpRuntime.Cache,它位于System.Web命名空间下,但是在ASP.NET Core中System.Web已经不复存在
首先需要在ConfigureServices中注册缓存服务

在下面的代码中从Home控制器的构造函中获取IMemoryCache实例

设置缓存 Set
_cache.Set("key", "value");
移除缓存 Remove
_cache.Remove("key");
.Net Core 使用异常信息
ASP.NET Core 2.0开始Microsoft.AspNetCore.All包里面包含了所有以Microsoft.AspNetCore开头的包,只是需要在Startup类的Configure方法中进行配置

将UseDeveloperExceptionPage放在你想捕获的中间件之前,如app.UseMvc。
注:为了应用程序的安全,一般不会在生产环境中启起用开发者页面(异常页面)。
到这里,startup.cs 的基本情况介绍完成了,在以后的经验总结中,会对每个配置点进行详细的介绍!
原文地址(个人博客):http://www.gitblogs.com/Blogs/Details?id=643c9664-dc4e-42cf-a15f-5368ebfcd7c9
.NET Core 项目经验总结:Startup.cs 介绍(二)的更多相关文章
- 设计模式(一)单例模式:创建模式 ASPNET CORE WEB 应用程序的启动 当项目中 没有STARTUP.CS 类如何设置启动 配置等等
设计模式(一)单例模式:创建模式 先聊一下关于设计的几个原则(1)单一原则(SRP):一个类应该仅有一个引起它变化的原因 :意思就是 (一个类,最好只负责一件事情,并且只有一个引起它变化的原因(2)开 ...
- 将 Net 项目升级 Core项目经验:(二)修复迁移后Net Standard项目中的错误
修复迁移后Net Standard项目中的错误 接上一章,项目编译结果如下: 解决依赖dll引用 在Net Framework项目的引用如下: 各引用和作用: log4net(1.10.0.0) 用于 ...
- AspNet Core Web 应用程序的启动 当项目中 没有Startup.cs 类如何设置启动 配置等等
感叹: Core 16年6月1号 在中国宣布上线 到现在已经快经历两年时间了,目前版本已经到了2.0 就目前的前景来看,个人感觉 到2020年才可能有所起色,等到Core更成熟 个人看法:在.net这 ...
- .NET Core 项目经验总结:项目结构介绍 (一)
原文地址(个人博客):http://www.gitblogs.com/Blogs/Details?id=384b4249-15e4-41bf-9cf7-44a3e1e51885 作为一个.NET We ...
- 如何在 asp.net core 3.x 的 startup.cs 文件中获取注入的服务
一.前言 从 18 年开始接触 .NET Core 开始,在私底下.工作中也开始慢慢从传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core ...
- .Net Core 项目引用本地类库方式(二)
上篇文章有详细的介绍.Net Core 项目中引用本地类库通过打包,然后Nugety引用方式,这里再介绍一种引用包的方式
- .NET Core项目部署到Linux(Centos7)(二)环境和软件的准备
目录 1.前言 2.环境和软件的准备 3.创建.NET Core API项目 4.VMware Workstation虚拟机及Centos 7安装 5.Centos 7安装.NET Core环境 6. ...
- AspNet Core Web 应用程序的启动(有关 Program.cs类/ Startup.cs类 ) 当项目中干掉 Startup.cs 类如何设置启动 配置等等
.有关怎么创建Core MVC/API 这里就不说了,前段时间的博客有说过: 1. 项目生成后会有如图所示两个类 Program类Startup类 2. Startup类 初始内容 public ...
- 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目
迁移Net项目为Net Core\Standard项目 背景: 我们公司内部有自己ORM开发框架,最新因为需要将系统迁移到国产服务器上,所以首先需要将最基础的ORM框架改造可以运行在国产服务器上.对于 ...
随机推荐
- MyBatis关联查询,一对多关联查询
实体关系图,一个国家对应多个城市 一对多关联查询可用三种方式实现: 单步查询,利用collection标签为级联属性赋值: 分步查询: 利用association标签进行分步查询: 利用collect ...
- IOS AES加密之ECB128模式
1.AES加密模式有好几种,网上大多是CBC.256模式,找了好久才找到解决ECB128模式加密. AES需要导入头文件 #import <CommonCrypto/CommonCryptor. ...
- NOIP2018划水记
// 6次NOIP里最爽的一次 去年的NOIP的游记:https://www.cnblogs.com/GXZlegend/p/7880740.html Day 0 特意请了一天假复习NOIP 实际上是 ...
- MT【95】由参数前系数凑配系数题2
提示:都是看$a,b$前的系数做的$a=4/3,b=2/3;a+b=\le2$,一样的可以求得$a+b$的最小值-1,当$b=\frac{1}{3},a=\frac{-4}{3}$时取到等号.此题是清 ...
- 洛谷P3613 睡觉困难综合征(LCT,贪心)
洛谷题目传送门 膜拜神犇出题人管理员!!膜拜yler和ZSY!! 没错yler连续教我这个蒟蒻写起床困难综合症和睡觉困难综合症%%%Orz,所以按位贪心的思路可以继承下来 这里最好还是写树剖吧,不过我 ...
- emWin notes
emwin 学习小记 @2018-7-5 ## 在使用 graph 控件时,需要在坐标上显示波形,波形刷新函数 GRAPH_DATA_YT_AddValue() 放在一个 while(1) 中,这样便 ...
- 【转】单片机系统中数字滤波的算法【C程序整理】
随机误差是有随机干搅引起的,其特点是在相同条件下测量同一个量时,其大小和符号做无规则变化而无法预测,但多次测量结果符合统计规律.为克服随机干搅引入的误差,硬件上可采用滤波技术,软件上可以采用软件算法实 ...
- Oracle和SQL SERVER在SQL语句上的差别
Oracle与Sql server都遵循SQL-92标准:http://owen.sj.ca.us/rkowen/howto/sql92F.html,但是也有一些不同之处,差别如下: Oracle中表 ...
- MySQL删除所有表的外键约束、禁用外键约束
转: MySQL删除所有表的外键约束.禁用外键约束 2017年10月27日 00:11:34 李阿飞 阅读数:4512 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...
- 弹指之间 -- Waltz
CHAPTER 18 华尔兹 Waltz 示例歌曲:白桦林,丁香花