ASP.Net Core 中startup 类的configure方法的作用?

这篇具有很好参考价值的文章主要介绍了ASP.Net Core 中startup 类的configure方法的作用?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ASP.Net Core 中startup 类的configure方法的作用?

简述:

这个方法来定义整个应用如何响应HTTP请求。它有几个比较重要的参数,Hosting environment, logfactory,applicationbuilder, 在这里我们可以配置一些中间件用来处理路径,验证、session、cookie等等。

详解:

Configure 是一个在

  • 命名空间 Microsoft.AspNetCore.Hosting 定义的
  • 抽象类
public abstract void Configure (Microsoft.AspNetCore.Builder.IApplicationBuilder app);

IApplicationBuilder

IApplicationBuilder 定义用于配置应用请求管道的类,ASP.NET Core 请求管道包含一系列请求委托,依次调用。

不清楚 Asp.Net Core 请求管道、中间件的读者,对这一部分的内容可以参考

https://www.cnblogs.com/stulzq/p/7760648.html

https://www.cnblogs.com/JNLightGade/p/5737485.html

常见中间件顺序

  1. 异常/错误处理
  2. HTTP 严格传输安全协议
  3. HTTPS 重定向
  4. 静态文件服务器
  5. Cookie 策略实施
  6. 身份验证
  7. 会话
  8. MVC

你可以添加其它参数 对 Configure 方法 进行重写,如 IHostingEnvironment 、ILoggerFactory

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ... ... , ... ...)
{
	... ...
}

3,中间件

Configure 方法 使用 IApplicationBuilder 来使用中间件

UseMapRun 三种使用方式

  • Use 使用中间件配置请求管道
  • Map 管道分支
  • Run 管道短路

对这一部分的内容可以参考

https://www.cnblogs.com/stulzq/p/7760648.html

https://www.cnblogs.com/JNLightGade/p/5737485.html

Asp.Net Core 内置很多中间件,用户可以直接使用,将在文章后面介绍

4,使用中间件

默认创建 Asp.Net Core Mvc 程序时,会生成如下模板(Asp.Net Core 2.1)

在文章后面或详细列出所有中间件并加以说明

       public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {            if (env.IsDevelopment())
            {                app.UseDeveloperExceptionPage();    //是否开发环境
            }            else
            {                app.UseExceptionHandler("/Home/Error");  //出现错误跳转到 /Error 页面
                app.UseHsts();    //在文章后面的第39行可以看到解释
            }            app.UseHttpsRedirection();    //把 HTTP 重定向到 HTTPS
            app.UseStaticFiles();       //使用静态文件
            app.UseCookiePolicy();      //与 Cookie 有关

            app.UseMvc(routes =>       //使用 MVP 页面
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }

可以直接使用 app.Use_______ 形式,直接使用内置中间件

5,Configure 方法 的参数 IApplicationBuilder

Configure 方法配置请求管道使用了 IApplicationBuilder,下面将详细列出 IApplicationBuilder 默认的方法、参数、特性等。

Properties(性质)

ApplicationServices 获取或设置提供对应用程序服务容器的访问的 IServiceProvider 提供程序IServiceProvider : 定义用于检索服务对象的机制,即为其他对象提供自定义支持的对象可以参考 https://www.cnblogs.com/watermoon2/p/5075002.html
Properties 获取可用于在中间件之间共享数据的 键/值 集合Properties 是类型为 IDictionary
ServerFeatures 获取应用程序服务器提供的HTTP特性集点击 IFeatureCollection 详细了解

Methods(方法)

Build() 建立此应用程序使用的委托来处理HTTP请求Build 是一个 AspNetCore.Http.RequestDelegate 类型的委托
New() 创建一个 IApplicationBuilder 共享 Properties 的 IApplicationBuilder
Use(Func 将中间件委托添加到应用程序的请求管道中,对与自定义的中间件,使用此方法。

6, Extension Methods(拓展方法)–微软提供的中间件

使用方法 app._______

以下将列出 所有中间件及其重载方法、说明

注意 IApplicationBuilder 范围很广,包括应用启动、依赖关系注入、路由、环境、配置、选项、日志记录、处理错误等。文章来源地址https://www.toymoban.com/news/detail-596621.html

UseRequestLocalization(IApplicationBuilder) 添加 RequestLocalizationMiddleware 以基于客户端提供的信息自动设置请求的区域性信息
UseRequestLocalization(IApplicationBuilder, RequestLocalizationOptions) 添加 RequestLocalizationMiddleware 以基于客户端提供的信息自动设置请求的区域性信息
UseRequestLocalization(IApplicationBuilder, Action 添加 RequestLocalizationMiddleware 以基于客户端提供的信息自动设置请求的区域性信息
UseRequestLocalization(IApplicationBuilder, String[]) 添加 RequestLocalizationMiddleware 以基于客户端提供的信息自动设置请求的区域性信息
UseAuthentication(IApplicationBuilder) 将 AuthenticationMiddleware 添加到指定的 IApplicationBuilder ,它支持身份验证功能
UseBrowserLink(IApplicationBuilder) 此方法被调用以在应用程序中启用浏览器链接。它注册了一个方法工厂,为每个请求创建 BrowserLinkMiddleware。笔者注:浏览器链接是Visual Studio中的一项功能,可在开发环境和一个或多个Web浏览器之间创建通信通道。您可以使用浏览器链接一次在多个浏览器中刷新Web应用程序,这对于跨浏览器测试很有用
UseIdentity(IApplicationBuilder) 此方法已过时,将在将来的版本中删除。推荐的替代方案是使用 UseAuthentication (在列表的第5行)
UseConnections(IApplicationBuilder, Action 向 IApplicationBuilder 请求执行管道添加对 ASP.NET Core 连接处理程序的支持
UseCookieAuthentication(IApplicationBuilder) 已经过时,不再推荐使用。官方建议使用 identity 配置(在列表的第5行)
UseCookieAuthentication(IApplicationBuilder, CookieAuthenticationOptions) 已经过时,不再推荐使用。官方建议使用 identity 配置(在列表的第5行)
UseCookiePolicy(IApplicationBuilder) 将 CookiePolicyMiddleware 处理程序添加到指定的 IApplicationBuilder,它支持 cookie 策略功能
UseCookiePolicy(IApplicationBuilder, CookiePolicyOptions) 将 CookiePolicyMiddleware 处理程序添加到指定的 IApplicationBuilder,它支持 cookie 策略功能
UseCors(IApplicationBuilder) 将CORS中间件添加到Web应用程序管道以允许跨域请求这是一个静态方法,类型为 Microsoft.AspNetCore.Builder.IApplicationBuilder
UseCors(IApplicationBuilder, Action 将CORS中间件添加到Web应用程序管道以允许跨域请求这是一个静态方法,类型为 Microsoft.AspNetCore.Builder.IApplicationBuilder
UseCors(IApplicationBuilder, String) 将CORS中间件添加到Web应用程序管道以允许跨域请求这是一个静态方法,类型为 Microsoft.AspNetCore.Builder.IApplicationBuilder
UseDefaultFiles(IApplicationBuilder) 为给定的请求路径启用默认文件映射
UseDefaultFiles(IApplicationBuilder, DefaultFilesOptions) 为给定的请求路径启用默认文件映射  笔者注:    参数 DefaultFilesOptions 选择默认文件名的选项,类型为 DefaultFilesOptions    返回 IApplicationBuilder
UseDefaultFiles(IApplicationBuilder, String) 为给定的请求路径启用默认文件映射  笔者注:    参数 String为 相对请求路径    返回 IApplicationBuilder
UseDeveloperExceptionPage(IApplicationBuilder) 从管道捕获同步和异步异常实例,并生成HTML错误响应
UseDeveloperExceptionPage(IApplicationBuilder, DeveloperExceptionPageOptions) 从管道捕获同步和异步异常实例,并生成HTML错误响应
UseDirectoryBrowser(IApplicationBuilder) 在当前路径上启用目录浏览笔者注:对于非程序运行目录或特殊目录,用户通过浏览器打开该目录时,会列出目录内容。ASP.Net Core 中startup 类的configure方法的作用?,.net 面试题,asp.net,后端,.netcore
UseDirectoryBrowser(IApplicationBuilder, DirectoryBrowserOptions) 在当前路径上启用目录浏览,同上
UseDirectoryBrowser(IApplicationBuilder, String) 在当前路径上启用目录浏览,同上
UseExceptionHandler(IApplicationBuilder) 向管道添加中间件,该中间件将捕获异常、记录异常并在备用管道中重新执行请求。如果响应已经启动,请求将不被重新执行
UseExceptionHandler(IApplicationBuilder, ExceptionHandlerOptions) 向管道添加中间件,该中间件将捕获异常、记录异常并在备用管道中重新执行请求。如果响应已经启动,请求将不被重新执行
UseExceptionHandler(IApplicationBuilder, Action 向管道添加中间件,该中间件将捕获异常、记录异常并在备用管道中重新执行请求。如果响应已经启动,请求将不被重新执行
UseExceptionHandler(IApplicationBuilder, String) 向管道添加中间件,该中间件将捕获异常、记录异常并在备用管道中重新执行请求。如果响应已经启动,请求将不被重新执行
UseFacebookAuthentication(IApplicationBuilder) 使用FaceBook身份认证
UseFacebookAuthentication(IApplicationBuilder, FacebookOptions) 使用FaceBook身份认证
UseFileServer(IApplicationBuilder) 为当前目录中的当前请求路径启用所有静态文件中间件(目录浏览除外)  --注意四者不同点
UseFileServer(IApplicationBuilder, FileServerOptions) 使给定的选项所有静态文件中间件                    --注意四者不同点
UseFileServer(IApplicationBuilder, Boolean) 是否为当前目录中的当前请求路径启用所有静态文件中间件(目录浏览除外)  --注意四者不同点
UseFileServer(IApplicationBuilder, String) 为来自同名目录的给定请求路径启用所有静态文件中间件(目录浏览除外    --注意四者不同点
UseForwardedHeaders(IApplicationBuilder) 转发代理到当前请求报头
UseForwardedHeaders(IApplicationBuilder, ForwardedHeadersOptions) 转发代理到当前请求报头
UseGoogleAuthentication(IApplicationBuilder) 使用 Google 进行身份认证
UseGoogleAuthentication(IApplicationBuilder, GoogleOptions) 使用 Google 进行身份认证
UseHostFiltering(IApplicationBuilder) 增加了过滤请求允许主机头的中间件,无效的请求将被拒绝并返回 400 状态代码
UseHsts(IApplicationBuilder) 添加了使用HSTS的中间件,它添加了严格的传输安全标头
UseHttpMethodOverride(IApplicationBuilder) 允许传入的POST请求以头文件中指定的类型重写方法类型
UseHttpMethodOverride(IApplicationBuilder, HttpMethodOverrideOptions) 允许传入POST请求以表单指定的类型重写方法类型
UseHttpsRedirection(IApplicationBuilder) 添加用于将HTTP请求重定向到HTTPS的中间件。
UseJwtBearerAuthentication(IApplicationBuilder) UseJwtBearerAuthentication 是过时的认证方案,官方已经不推荐使用
UseJwtBearerAuthentication(IApplicationBuilder, JwtBearerOptions) UseJwtBearerAuthentication 是过时的认证方案,官方已经不推荐使用
Map(IApplicationBuilder, PathString, Action 根据给定的请求路径的匹配来分支请求管道。如果请求路径从给定路径开始,则执行分支
MapWhen(IApplicationBuilder, Func 根据给定的预测结果对请求流水线进行分支
UseMicrosoftAccountAuthentication(IApplicationBuilder) UseMicrosoftAccountAuthentication 过时,官方不再推荐使用
UseMicrosoftAccountAuthentication(IApplicationBuilder, MicrosoftAccountOptions) UseMicrosoftAccountAuthentication 过时,官方不再推荐使用
UseMvc(IApplicationBuilder) 将 MVC 添加到 请求执行管道中
UseMvc(IApplicationBuilder, Action 将 MVC 添加到请求执行管道中,并配置路由,使用示例app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); });
UseMvcWithDefaultRoute(IApplicationBuilder) 使用默认的路由模板笔者注:在你创建Mvc应用时,就已经默认生成默认的路由模板格式 {controller=Home}/{action=Index}/{id?} 使用此中间件的效果等同上一个表格的示例
UseOAuthAuthentication(IApplicationBuilder) UseOAuthAuthentication 过时,官方不推荐使用
UseOAuthAuthentication(IApplicationBuilder, OAuthOptions) UseOAuthAuthentication 过时,官方不推荐使用
UseOpenIdConnectAuthentication(IApplicationBuilder) UseOpenIdConnectAuthentication 过时,官方不推荐使用
UseOpenIdConnectAuthentication(IApplicationBuilder, OpenIdConnectOptions) UseOpenIdConnectAuthentication 过时,官方不推荐使用
UseResponseCompression(IApplicationBuilder) 添加用于动态压缩HTTP响应的中间件
UseRewriter(IApplicationBuilder) 检查给定URL是否匹配规则和条件(正则表达式),并修改匹配的HTTP语境。
UseRewriter(IApplicationBuilder, RewriteOptions) 检查给定URL是否匹配规则和条件(正则表达式),并修改匹配的HTTP语境
UseRouter(IApplicationBuilder, IRouter) 创建路由规则并添加到路由表中
UseRouter(IApplicationBuilder, Action 创建路由规则并添加到路由表中
Run(IApplicationBuilder, RequestDelegate) 使管道短路笔者注:当管道碰到Run使,无论后面是否还有其它中间件,都会忽略
UseSession(IApplicationBuilder) 添加 Session 以自动启用应用程序的会话状态
UseSession(IApplicationBuilder, SessionOptions) 添加 Session 以自动启用应用程序的会话状态
UseSignalR(IApplicationBuilder, Action 添加 SignalR 到请求管道中
UseSpa(IApplicationBuilder, Action 通过返回单页应用程序(SPA)的默认页面,处理从中间件链中此点开始的所有请求。这个中间件应该放在链的末尾,以便其他提供静态文件、MVC操作等的中间件优先
UseStaticFiles(IApplicationBuilder) 为当前请求路径启用静态文件服务
UseStaticFiles(IApplicationBuilder, StaticFileOptions) 为当前请求路径启用静态文件服务
UseStaticFiles(IApplicationBuilder, String) 为当前请求路径启用静态文件服务
UseStatusCodePages(IApplicationBuilder) 添加具有默认响应处理程序的中间件,该处理程序检查400和599之间没有主体时的状态代码,以进行响应
UseStatusCodePages(IApplicationBuilder, StatusCodePagesOptions) 同上
UseStatusCodePages(IApplicationBuilder, Action 同上
UseStatusCodePages(IApplicationBuilder, Func 同上
UseStatusCodePages(IApplicationBuilder, String, String) 同上
UseStatusCodePagesWithRedirects(IApplicationBuilder, String) 同上
UseStatusCodePagesWithReExecute(IApplicationBuilder, String, String) 同上
UseTwitterAuthentication(IApplicationBuilder) 使用 Twitter 进行身份认证,官方不再推荐这种过时用法
UseTwitterAuthentication(IApplicationBuilder, TwitterOptions) 使用 Twitter 进行身份认证,官方不再推荐这种过时用法
Use(IApplicationBuilder, Func<HttpContext,Func 将一个中间件委托添加到应用程序的请求管道中
UseMiddleware(IApplicationBuilder, Type, Object[]) 将一个中间件添加到应用程序的请求管道中,注意与上面的区别
UseMiddleware 将一个中间件添加到应用程序的请求管道中,注意与上面的区别
UsePathBase(IApplicationBuilder, PathString) 加中间件,从中间件从请求路径中提取指定的路径库并将其附加到请求路径库
UseWhen(IApplicationBuilder, Func 有条件地在请求管道中创建一个分支,并将其重新连接到主管道
UseWebpackDevMiddleware(IApplicationBuilder, WebpackDevMiddlewareOptions) 英文原文如下Enables Webpack dev middleware support. This hosts an instance of the Webpack compiler in memory in your application so that you can always serve up-to-date Webpack-built resources without having to run the compiler manually. Since the Webpack compiler instance is retained in memory, incremental compilation is vastly faster that re-running the compiler from scratch.Incoming requests that match Webpack-built files will be handled by returning the Webpack compiler output directly, regardless of files on disk. If compilation is in progress when the request arrives, the response will pause until updated compiler output is ready.
UseWebSockets(IApplicationBuilder) WebSockets服务
UseWebSockets(IApplicationBuilder, WebSocketOptions) WebSockets服务
UseWelcomePage(IApplicationBuilder) 添加一个欢迎页面到请求管道中
UseWelcomePage(IApplicationBuilder, WelcomePageOptions) 添加一个欢迎页面到请求管道中,可以自己配置欢迎页面
UseWelcomePage(IApplicationBuilder, PathString) 添加一个欢迎页面到请求管道中,自定义欢迎页面的路径
UseWelcomePage(IApplicationBuilder, String) 添加一个欢迎页面到请求管道中
UseSpaStaticFiles(IApplicationBuilder) 将应用程序配置为为单页应用程序(SPA)提供静态文件
UseSpaStaticFiles(IApplicationBuilder, StaticFileOptions) 将应用程序配置为为单页应用程序(SPA)提供静态

到了这里,关于ASP.Net Core 中startup 类的configure方法的作用?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ASP.NET Core MVC通过IActionFilter.OnActionExecuting方法,获取Controller的Action方法参数值

    用过ASP.NET Core MVC中IActionFilter拦截器的开发人员,都知道这是一个非常强大的MVC拦截器。最近才发现IActionFilter的OnActionExecuting方法,甚至可以获取Controller的Action方法参数值。 假如我们在ASP.NET Core MVC项目中有一个HomeController,其中有一个Action方法叫Login,该方法有一个LoginRequ

    2023年04月21日
    浏览(37)
  • dotnet 简单方法在一个进程内同时跑起 WPF 和 ASP.NET Core 框架

    从设计架构上,无论是 WPF 还是 ASP.NET Core 框架,都是在 dotnet 运行时上层的应用,两个框架处于平级的结构。理论上讲,两个平级的框架只要不存在特殊的情况,都是能够相容存在的。本文将和大家介绍一个非常简单的方法,在一个进程内同时跑起 WPF 和 ASP.NET Core 框架 在一

    2024年04月26日
    浏览(30)
  • ASP.NET Core MVC中的IActionFilter.OnActionExecuting方法,可以获取Controller的Action方法参数值

    用过ASP.NET Core MVC中IActionFilter拦截器的开发人员,都知道这是一个非常强大的MVC拦截器。最近才发现IActionFilter的OnActionExecuting方法,甚至可以获取Controller的Action方法参数值。 假如我们在ASP.NET Core MVC项目中有一个HomeController,其中有一个Action方法叫Login,该方法有一个LoginRequ

    2023年04月20日
    浏览(58)
  • ASP.NET Core教程:ASP.NET Core 程序部署到Windows系统

    本篇文章介绍如何将一个ASP.NET Core Web程序部署到Windows系统上。这里以ASP.NET Core WebApi为例进行讲解。首先创建一个ASP.NET Core WebApi项目,使用默认的Values控制器,这里使用Visual Studio 2019创建一个ASP.NET Core 3.1d的WebApi项目。 创建新项目的时候选项ASP.NET Core Web应用程序,如下图所

    2023年04月08日
    浏览(32)
  • ASP.NET和ASP.NET Core的区别

    ASP.NET和ASP.NET Core是两个不同的Web应用程序框架,它们都是由Microsoft开发的。ASP.NET是Microsoft推出的第一个Web应用程序框架,而ASP.NET Core是其最新版本。本文将介绍ASP.NET和ASP.NET Core的简介和区别。 ASP.NET的简介 ASP.NET是一个基于.NET框架的Web应用程序框架,它是Microsoft推出的第一

    2024年02月16日
    浏览(43)
  • Asp.Net VS ASP.NET Core 请求管道

    参考链接 ASP.NET CORE 启动过程及源码解读 请求进入Asp.Net工作进程后,由进程创建HttpWorkRequest对象,封装此次请求有关的所有信息,然后进入HttpRuntime类进行进一步处理。HttpRuntime通过请求信息创建HttpContext上下文对象,此对象将贯穿整个管道,直到响应结束。同时创建或从应用

    2024年02月04日
    浏览(45)
  • ASP.NET Core MVC -- 将视图添加到 ASP.NET Core MVC 应用

    右键单击“视图”文件夹,然后单击“添加”“新文件夹”,并将文件夹命名为“HelloWorld”。 右键单击“Views/HelloWorld”文件夹,然后单击“添加”“新项”。 在“添加新项 - MvcMovie”对话框中: 在右上角的搜索框中,输入“视图” 选择“Razor 视图 - 空” 保持“名称”框的

    2024年02月13日
    浏览(57)
  • ASP.NET Core SingleR Core:WebApi + .net 客户端开发

    我之前稍微研究了一下SignalR Core。用起来还行。简单来说SignalR就是用来解决实时通讯的问题的。 ASP.NET Core SingleR:初次体验和简单项目搭建 SignalR支持三种客户端,C#,Java,JavaScirpt。基本够用了。本身就是微软开发的,肯定支持自己的语言。因为是Websocket的上层封装,所以也要支

    2024年01月20日
    浏览(49)
  • 【C#/.NET】使用ASP.NET Core对象池

    Microsoft.Extensions.ObjectPool   减少初始化/资源分配,提高性能。这一条与线程池同理,有些对象的初始化或资源分配耗时长,复用这些对象减少初始化和资源分配。比如:我有一个执行耗时约500毫秒,内存空间 2KB的任务为此创建一个新线程异步执行,而创建线程耗时1秒,内存空

    2024年02月06日
    浏览(51)
  • 【ASP.NET Core 基础知识】--最佳实践和进阶主题--设计模式在ASP.NET Core中的应用

    一、设计模式概述 1.1 什么是设计模式 设计模式是在软件设计过程中反复出现的、经过验证的、可重用的解决问题的方法。它们是针对特定问题的通用解决方案,提供了一种在软件开发中可靠的指导和标准化方法。设计模式通常描述了一种在特定情景下的解决方案,包括了问

    2024年02月21日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包