Application Startup

ASP.NET Core为应用程序提供了处理每个请求的完整控制。Startup类是应用程程的入口(entry point),这个类可以设置配置(configuration),并且将应用程序将要使用的服务连接起来。

开发人员可以在Startup类中配置请求管道,该管道将用于处理应用程序的所有请求。

1.Startup类

在ASP.NET Core中,Startup类提供了应用程序的入口,而且在所有应用程序中都有Startup类。

Startup类能够选择性地在构造函数中接受通过依赖注入提供的依赖项。

Startup类必须定义Configure方法,可选择定义一个ConfigureServices方法,这些方法将在应用程序启动时被调用。

2.Configure方法

Configure方法用于指定ASP.NET应用程序将如何响应每一个HTTP请求。

复杂的管道配置可以封装于中间件(middleware)中,并通过扩展方法添加到IApplicationBuilder上。

Configure方法必须接受一个Configure参数。一些额外服务,比如IHostingEnvironment或ILoggerFactory也可以被指定,并且在它们可用的情况下,这些服务将会被服务器注入进来。

下面的例子中,多个扩展方法被用于配置管道,以支持BrowserLink、错误页、静态文件、ASP.NET MVC以及Identity

public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseDirectoryBrowser();
}
else
{
app.UseExceptionHandler("/Home/Error");
} app.UseStaticFiles();
app.UseIdentity(); app.UseMvc(routes =>
{
routes.MapRoute(
name:"default",
template:"{controller=Home}/{action=Index}/{id?}"
);
});
}

每个Use扩展方法都会把一个中间件加入请求管道。例如,UseMvc扩展方法增加了路由中间件请求管道,并配置MVC为默认处理程序。

3.ConfigureServices

正如Configure,建议在IServiceCollection上使用扩展方法来包装需要大量配置细节的ConfigureServices。

下面的例子中看到几个Add[Something]扩展方法被用于设置应用程序,以能够使用Entity Framework、Identity和MVC

        public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders(); services.AddMvc(); // Add application services
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
}

通过依赖注入可将服务加入服务容器,使其在应用程序中可用。

ASP.NET Core学习——2的更多相关文章

  1. ASP.NET Core学习系列

    .NET Core ASP.NET Core ASP.NET Core学习之一 入门简介 ASP.NET Core学习之二 菜鸟踩坑 ASP.NET Core学习之三 NLog日志 ASP.NET C ...

  2. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

  3. ASP.NET Core学习指导

    ASP.NET Core 学习指导 "工欲善其事必先利其器".我们在做事情之前,总应该做好充分的准备,熟悉自己的工具.就像玩游戏有一些最低配置一样,学习一个新的框架,也需要有一些基 ...

  4. Asp.Net Core学习笔记:入门篇

    Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...

  5. ASP.NET Core学习零散记录

    赶着潮流听着歌,学着.net玩着Core 竹子学Core,目前主要看老A(http://www.cnblogs.com/artech/)和tom大叔的博客(http://www.cnblogs.com ...

  6. ASP.NET Core学习之三 NLog日志

    上一篇简单介绍了日志的使用方法,也仅仅是用来做下学习,更何况只能在console输出. NLog已是日志库的一员大佬,使用也简单方便,本文介绍的环境是居于.NET CORE 2.0 ,目前的版本也只有 ...

  7. ASP.NET Core学习之一 入门简介

    一.入门简介 在学习之前,要先了解ASP.NET Core是什么?为什么?很多人学习新技术功利心很重,恨不得立马就学会了. 其实,那样做很不好,马马虎虎,联系过程中又花费非常多的时间去解决所遇到的“问 ...

  8. ASP.NET Core学习总结(1)

    经过那么长时间的学习,终于想给自己这段时间的学习工作做个总结了.记得刚开始学习的时候,什么资料都没有,光就啃文档.不过,值得庆幸的是,自己总算还有一些Web开发的基础.至少ASP.NET的WebFor ...

  9. Asp.net Core学习笔记

    之前记在github上的,现在搬运过来 变化还是很大的,感觉和Nodejs有点类似,比如中间件的使用 ,努力学习ing... 优点 不依赖IIS 开源和跨平台 中间件支持 性能优化 无所不在的依赖注入 ...

  10. 2019年ASP.NET Core学习路线

    - [先决条件] + C# + Entity Framework + ASP.NET Core + SQL 基础知识 - [通用开发技能] + 学习 GIT, 在 GitHub 中创建开源项目 + 掌 ...

随机推荐

  1. delphi xe 正则表达式

    Delphi XE 中自带了正则表达式的处理类TRegEx,包含在单元 RegularExpressions,使用时要uses 一下.      TRegEx 是一个结构 ,使用时不用释放.他内部还是 ...

  2. CF446D DZY Loves Games

    CF446D DZY Loves Games 高斯消元好题 如果暴力地,令f[i][k]表示到i,有k条命的概率,就没法做了. 转化题意 生命取决于经过陷阱的个数 把这个看成一步 所以考虑从一个陷阱到 ...

  3. 栈Stack --- 数组实现

    栈最大的一个特点就是先进后出(FILO—First-In/Last-Out). /** * 栈:后进先出 * Created by fred on 2018/7/31. */ public class ...

  4. MacBook Pro常用快捷键

    MacBook Pro常用快捷键 Mac  fn + left / right / up / down 相当于 home/end/page up /page down delete 删除光标前一个字符 ...

  5. cs224d 作业 problem set2 (一) 用tensorflow纯手写实现sofmax 函数,线性判别分析,命名实体识别

    Hi Dear Today we will use tensorflow to implement the softmax regression and linear classifier algor ...

  6. 数据库的基本使用(C#语言)

    目录 insert select 的使用 delete update 更新 Like模糊查询 Order 排序 GETDATA() 聚合函数:MAX,MIN,AVG,SUM,COUNT Max COU ...

  7. 使用latex绘制多层神经网络结构图

    1,使用Tikz包: 2,参考官方例程单层神经网络结构,绘制了一个含有3隐藏层的BP神经网络节点图 代码如下: \documentclass{article} \usepackage{tikz} \b ...

  8. Git比较分支差异的3个命令

    查看本地分支 git branch 查看远端分支,无论是否checkout到本地 git branch -r 假如想比较dev和master 命令1:比较文件 git diff dev master ...

  9. MySQL中的关系

    关系 将实体与实体的关系,反应到最终数据库表的设计中来.将关系分为三种:一对一,一对多(多对一)和多对多.所有的关系都是指的是表与表之间的关系. 一对一 一张表中的一条记录一定只能与另外一张表的一条记 ...

  10. Spring入门之生命周期

    好几日没有读东西了,今天本来要读mybatis原理部分,但是看到作者讲,只是学会用不用学那么深,遂直接开干spring,工作中一直用springboot,框架都是领导搭好的,每天的任务就是增删改查,挺 ...