.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框架改造可以运行在国产服务器上.对于 ...
随机推荐
- 【bzoj5004】开锁魔法II 组合数学+概率dp
题目描述 有 $n$ 个箱子,每个箱子里有且仅有一把钥匙,每个箱子有且仅有一把钥匙可以将其打开.现在随机打开 $m$ 个箱子,求能够将所有箱子打开的概率. 题解 组合数学+概率dp 题目约定了每个点的 ...
- C++11 自动推导auto
C++11 自动推导auto C++11中引入的auto主要有两种用途:自动类型推导和返回值占位. auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除.前后两个标准 ...
- ASP.NET MVC 此安装不支持该项目类型解决方法
http://www.cnblogs.com/younggun/archive/2011/03/03/1969498.html ASP.NET MVC 此安装不支持该项目类型解决方法 打开 .csp ...
- OpenStack 存储服务 Cinder存储节点部署NFS(十七)
Cinder存储节点部署 1.安装软件包 yum install -y nfs-utils rpcbind 提示:早期版本安装portmap nfs-utils :包括基本的NFS命令与监控程序 rp ...
- How To Crawl A Web Page with Scrapy and Python 3
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- sublime代码对齐
来源于:Sublime 自动缩进怎么设置? - 郭缔的回答 - 知乎 https://www.zhihu.com/question/22987174/answer/90874465 { "k ...
- Linux下/etc/passwd、/etc/shadow、/etc/group文件
1./etc/passwd [root@prac ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbi ...
- bzoj千题计划255:bzoj3572: [Hnoi2014]世界树
http://www.lydsy.com/JudgeOnline/problem.php?id=3572 明显需要构造虚树 点属于谁管理分三种情况: 1.属于虚树的点 2.在虚树上的边上的点 3.既不 ...
- bzoj千题计划248:bzoj3697: 采药人的路径
http://www.lydsy.com/JudgeOnline/problem.php?id=3697 点分治 路径0改为路径-1 g[i][0/1] 和 f[i][0/1]分别表示当前子树 和 已 ...
- win10内建子系统Linux
从cmd中下载linux和linux终端安装程序一样 最新要从商店购买(当然是免费) ubuntu openSUSE SUSE 3个 创建用户