Startup 类
Startup 类的作用:
- 配置应用所需的任何服务
- 定义请求处理管道
- 配置(或注册)服务的代码添加到Startup.ConfigureServices方法中。服务是应用使用的组件。例如,Entity Framework Core上下文对象是一项服务。
- 配置请求处理管道的代码添加到Startup.Configure方法中。管道有一系列中间件组建组成。例如,中间件可能处理对静态文件的请求或将HTTP请求重定向到HTTPS。每个中间件在HttpContext上执行异步操作,然后调用管道中的下一个中间件或终止请求。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2); services.AddDbContext<MovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MovieDb")));
} public void Configure(IApplicationBuilder app)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseMvc();
}
}在构建应用的主机时,系统为应用指定Startup类。在Program类的主机生成器上调用BUild时,将生成应用的主机。通常在主机生成器上调用WebHostBuilderExtensions.UseStartup<TStartup> 方法来指定Startup类;
public class Program
{
public static void Main(string[] args)
{
var host = CreateWebHostBuilder(args).Build(); using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider; try
{
var context = services.
GetRequiredService<RazorPagesMovieContext>();
context.Database.Migrate();
SeedData.Initialize(services);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred seeding the DB.");
}
} host.Run();
} public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
在 Startup类中注入依赖关系的常见用途为注入:
- IHostingEnvironment 按环境配置服务
- IConfiguration 读取配置
- ILoggerFactory 在记录器中创建Startup.ConfigureServices.
private readonly IHostingEnvironment _env;
ILogger _logger;
public Startup(IHostingEnvironment env, ILoggerFactory loggerFactory, IConfiguration configuration)
{
_env = env;
_logger = loggerFactory.CreateLogger<Filters>();
Configuration = configuration;
}
ConfigureServices方法
主机可能会在调用Startup方法之前配置某些服务。
对于需要大量设置的功能,IServiceCollection 上有 Add{Service} 扩展方法。 典型 ASP.NET Core 应用将为实体框架、标识和 MVC 注册服务:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
services.AddMvc(options =>
{
options.Filters.Add(new Filters(_logger));
});
}
将服务添加到服务容器,使其在应用和Configure方法中可用
Configure方法
Configure 方法用于指定应用响应 HTTP 请求的方式。可通过将中间件组建添加到IApplicationBuilder 实例来配置请求管道。
ASP.NET Core 模板配置的管道支持:
- 开发人员异常页
- 异常处理程序
- HTTP 严格传输安全性 (HSTS)
- HTTPS 重定向
- 静态文件
- 一般数据保护条例 (GDPR)
- ASP.NET Core MVC 和 Razor Pages
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
} app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy(); app.UseMvc();
}
每个Use扩展方法将一个或多个中间件组件添加到请求管道。 例如,UseMvc()扩展方法将路由中间件添加到请求管道,并将 MVC 配置为默认处理程序。
请求管道中的每个中间件组件负责调用管道中的下一个组件,或在适当情况下使链发生短路。如果中间件链中未发生短路,则每个中间件都有第二次机会再将请求发送到客户端前处理该请求。
Startup 类的更多相关文章
- 【Owin 学习系列】2. Owin Startup 类解析
Owin Startup 类解析 每个 Owin 程序都有 startup 类,在这个 startup 类里面你可以指定应用程序管道模型中的组件.你可以通过不同的方式来连接你的 startup 类和运 ...
- ASP.NET Core 应用程序Startup类介绍
Startup类配置服务和应用程序的请求管道. Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为Startup.在主程序的Web Host生成器(WebHostBui ...
- asp.net core 系列 2 启动Startup类介绍
一.Startup类 ASP.NET Core 应用是一个控制台应用,它在其 Program.Main 方法中创建 Web 服务器.其中Main方法是应用的托管入口点,Main 方法调用 WebHos ...
- DotNetCore深入了解之一Startup类
一个典型的ASP.NET Core应用程序会包含Program与Startup两个文件.Program类中有应用程序的入口方法Main,其中的处理逻辑通常是创建一个WebHostBuilder,再生成 ...
- ASP.NET Core中的Startup类
ASP.NET Core程序要求有一个启动类.按照惯例,启动类的名字是 "Startup" .Startup类负责配置请求管道,处理应用程序的所有请求.你可以指定在Main方法中使 ...
- ASP.NET Core 应用程序Startup类介绍 (转载)
Startup类配置服务和应用程序的请求管道. Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为Startup.在主程序的Web Host生成器(WebHostBui ...
- ASP.NET Core Startup类 Configure()方法 | ASP.NET Core 中间件详细说明
ASP.NET Core 程序启动过程如下 目录 Startup 类 Configure() 方法 中间件 使用中间件 Configure 方法 的参数 IApplicationBuilder Ext ...
- 在ASP.NET Core的startup类中如何使用MemoryCache
问: 下面的代码,在ASP.NET Core的startup类中创建了一个MemoryCache并且存储了三个键值“entryA”,“entryB”,“entryC”,之后想在Controller中再 ...
- 【APS.NET Core】- 应用程序Startup类介绍
转自:https://www.cnblogs.com/stulzq/p/7845026.html Startup类配置服务和应用程序的请求管道. Startup 类 ASP.NET Core应用程序需 ...
随机推荐
- blueprint的使用
第一步:导入蓝图模块: from flask import Blueprint 第二步:创建蓝图对象: #Blueprint必须指定两个参数,admin表示蓝图的名称,__name__表示蓝图所在模块 ...
- vue中使用video插件vue-video-player
一.安装插件 npm install vue-video-player --save 二.配置插件 在main.js中全局配置插件 import VideoPlayer from 'vue-video ...
- Vue源码之目录结构
Vue版本:2.6.9 源码结构图 ├─ .circleci // 包含CircleCI持续集成/持续部署工具的配置文件 ├─ .github // 项目相关的说明文档,上面的说明文档就在此文件夹 ├ ...
- jQuery基础之一
jQuery基础之一 初识jQuery jQuery封装JavaScript中多个好用的函数成为并形成代码库,操作时也更符合我们的习惯,并且减少了浏览器之间的兼容性. jQuery官网 引入 本地 ...
- JQ方法实用案例///鼠标移动到div和修改ipt中弹窗、CSS鼠标变小手、JQ获取元素属性、JQ选择器
今天学习了jQ,jQ对js的帮助很大,菜鸟教程上也有属性.可以查看 js 和 jquery主要的区别 在 dom 想用jquery 必须先引入(顺序问题) 先css 再js: ...
- Eclipse上传新项目到GitLab
E&T: Eclipse; GitLab; GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(https://github.com/gitlabhq/gitlabhq ...
- 2019CVTE技术支持软件编程
题目:找出长度为M的数组S中求和为1的任意三个数组合个数,举例:S=[-2, 0, 1, 2, -1, 3],结果为:3个([-2, 0, 3], [-2, 1, 2], [0, 2, -1]). 思 ...
- day-08文件的操作
三种字符串 1.普通字符串:u‘以字符作为输出单位’ print(u'abc') # 用于显示 2.二进制字符串:b‘二进制字符串以字节作为输出单位’ print(b'abc') # 用于传输 3.原 ...
- 创建一个dynamics 365 CRM online plugin (七) - plugin当中的Impersonation角色
我们之前创建的plugin都是使用default的 run in User's Context. 理解就是使用正在登陆的security context用户信息 那有个问题,如果当前用户的securi ...
- 1.1.27 word表格里的文字不显示
1.问题: 下载其他人做的表格后,在表格内打字,字不显示. 2.解决方案: 产生这种问题的原因是,该表格设置的字体,你的电脑未安装. a.将隐藏文字选中,设为[宋体]或其他已经安装字体. b.下载[方 ...