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

 

原文地址(个人博客):http://www.gitblogs.com/Blogs/Details?id=643c9664-dc4e-42cf-a15f-5368ebfcd7c9

 

第一次面对 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 的基本情况介绍完成了,在以后的经验总结中,会对每个配置点进行详细的介绍!

 

 

原文地址(个人博客):http://www.gitblogs.com/Blogs/Details?id=643c9664-dc4e-42cf-a15f-5368ebfcd7c9

posted on 2018-09-16 15:48  忙碌ing  阅读(4210)  评论(0编辑  收藏  举报

导航