.NET Core 项目经验总结:Startup.cs 介绍(二)

时间:2018-09-15 16:18 作者:Mr.Pan 阅读数:1679



在上一篇 .NET Core 项目经验总结:项目结构介绍 (一) 文章中,介绍了默认的项目文件结构,在下面的内容中将介绍StartUp.cs文件的基本情况,这是个很重有的文件,真的很重要!



第一次面对 Startup.cs 往往无从下手,本文记录在项目中的经验,不会涉入到内部的代码实现以及相关的原理。


项目初始化完成startup.cs的原貌:

image.png

ConfigureServices:  将服务注入到容器中  比如:第三方组件

Configuere:配置http请求管道 ,比如:session,cookie



读取配置信息

.Net Core 使用appsetting.json 存储配置信息,如图:

image.png

在文件中,增加了数据库配置信息,怎么读取呢?

      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中使用

image.png



.Net Core 使用Cache

说到内存缓存大家可能立马想到了HttpRuntime.Cache,它位于System.Web命名空间下,但是在ASP.NET Core中System.Web已经不复存在

首先需要在ConfigureServices中注册缓存服务

image.png

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

image.png

设置缓存 Set

_cache.Set("key", "value");

移除缓存 Remove

_cache.Remove("key");



.Net Core 使用异常信息

ASP.NET Core 2.0开始Microsoft.AspNetCore.All包里面包含了所有以Microsoft.AspNetCore开头的包,只是需要在Startup类的Configure方法中进行配置

image.png

UseDeveloperExceptionPage放在你想捕获的中间件之前,如app.UseMvc

注:为了应用程序的安全,一般不会在生产环境中启起用开发者页面(异常页面)。



到这里,startup.cs 的基本情况介绍完成了,在以后的经验总结中,会对每个配置点进行详细的介绍!




推荐阅读:

使用VSCode创建.NET Core 项目,添加类库间引用

.NET Core 项目经验总结:项目结构介绍 (一)

.NET Core 项目经验总结:Startup.cs 介绍(二)

.NET Core 项目经验总结:Session的配置与使用,使用Redis实现分布式Session(三)

.NET Core 项目经验总结: UseStaticFiles 静态文件的使用(四)

.NET Core 项目经验总结:异常处理(五)

.NET Core 项目经验总结:Authorize 登录授权以及多用户登录(六)





推荐文章

[推荐] .NET Core 项目经验总结:Startup.cs 介绍(二)

[推荐] .NET Core 项目经验总结: UseStaticFiles 静态文件的使用(四)

[推荐] ASP.NET Core开发者成长路线图(转)

[推荐] Redis 使用经验总结(一): 下载与安装

[推荐] Redis 使用经验总结(三): 主从复制 slaveof ip port

[推荐] .Net Core 使用 @inject 在View中使用注入(DI)引入Microsoft.AspNetCore.Hosting.IHostingEnvironment

[推荐] nginx在windows上安装配置 - nginx for Windows

[推荐] .net core中前端包的安装

[推荐] .NetCore 发布类库为Nuget包(打造自己的NuGet包)

[推荐] .net core 2.0独立部署 (待验证)

[推荐] .net core 中间件管道底层剖析 (转)

[推荐] .net core 杂记:日记记录 (转)

[推荐] c# 个人总结

[推荐] .Net Core 2.0 使用dotnet 命令创建.Net Core Web项目

[推荐] Jquery.Validate例子


评论列表

   回复 引用
#1楼    2018/9/17 15:12:59    童俊强
Program.cs 还是Web 应用程序的默认入口调用 Startup.cs 中的 ConfigureServices 方法 和 Configure 方法。



注册用户登录后才能发表评论,请登录注册,访问 博客首页