首页 > 编程语言 >app.Environment.IsDevelopment、app.UseStaticFiles() 、在ASP.NET Core应用程序中,调用 app.Run() 方法后,系统会执行什么操作

app.Environment.IsDevelopment、app.UseStaticFiles() 、在ASP.NET Core应用程序中,调用 app.Run() 方法后,系统会执行什么操作

时间:2024-11-28 18:59:33浏览次数:4  
标签:Core UseStaticFiles Run 请求 app 中间件 应用程序 HTTP

在ASP.NET Core应用程序中,app.UseStaticFiles() 是一个中间件方法,用于启用对静态文件的服务。这意味着当你的应用程序接收到对静态资源(如HTML文件、CSS文件、JavaScript文件、图片等)的请求时,UseStaticFiles 中间件会处理这些请求并提供相应的文件。

在ASP.NET Core应用程序中,app.Environment 提供了对当前环境的访问。IsDevelopmentIWebHostEnvironment 接口的一个属性,用于检查应用程序是否正在开发环境中运行。这个属性通常用于根据环境调整配置,例如启用详细的错误页面、不同的数据库连接字符串或其他环境特定的设置。

 

  1. 启动服务器:app.Run() 方法会启动Kestrel服务器(或其他配置的服务器,如IIS或HTTP.sys),监听之前配置的端口和地址上的HTTP请求。

  2. 注册的中间件执行:一旦服务器启动并监听请求,app.Run() 方法会执行之前在中间件管道中注册的所有中间件。这些中间件按注册顺序执行,直到找到一个匹配当前请求的路由并处理它,或者执行完所有中间件后仍未找到匹配的路由。

  3. 处理请求:对于每个进入的HTTP请求,中间件管道会从开始到结束依次执行。每个中间件可以决定是继续执行下一个中间件、直接处理请求,还是短路请求处理流程。

  4. 响应生成:当请求被处理后(无论是由中间件直接处理还是由路由处理),HTTP响应会被发送回客户端。

  5. 持续监听:app.Run() 方法会持续监听和处理进入的请求,直到应用程序停止。这意味着它会无限循环,等待和响应新的HTTP请求。

  6. 优雅关闭:如果你需要优雅地关闭应用程序(例如,在接收到特定信号时),你可以在 app.Run() 调用之前配置主机的生命周期事件,以便在关闭时执行清理操作。

下面是一个简单的示例,展示如何在应用程序停止时执行清理操作:

csharp
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

// 配置中间件...
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllers();

app.Run();

// 应用程序不会直接到达这里,因为app.Run()是一个无限循环
// 但是,你可以配置主机的生命周期事件来执行清理操作

builder.WebHost.ConfigureHostLifetime(hostLifetime =>
{
    hostLifetime.StopAsyncTimeout = TimeSpan.FromSeconds(5); // 设置停止超时时间
    hostLifetime.WaitForShutdown(); // 等待接收停止信号
});

在这个示例中,ConfigureHostLifetime 方法用于配置主机的生命周期事件,以便在应用程序停止时执行清理操作。这确保了应用程序可以优雅地关闭,而不是突然终止。

总之,app.Run() 方法是ASP.NET Core应用程序的入口点,它负责启动服务器、执行中间件管道,并持续监听和处理HTTP请求,直到应用程序停止。

标签:Core,UseStaticFiles,Run,请求,app,中间件,应用程序,HTTP
From: https://www.cnblogs.com/Dongmy/p/18574951

相关文章

  • uni-app运行 安卓模拟器 MuMu模拟器
    最近公司开发移动端系统,使用真机时每次调试的时候换来换去的麻烦,所以使用模拟器来调试方便。记录一下安装和连接的过程一、安装MuMu模拟器百度搜索MuMu模拟器并打开官网或者点这里MuMu模拟器官网点击下载模拟器安装模拟器,如果系统已经安装了的话重新安装会出现覆盖安装按......
  • 支付宝小程序支付及支付后异步通知 C# NeCore3.1
    十年河东,十年河西,莫欺少年穷学无止境,精益求精1、支付异步通知usingAliyunHelper.AliPayHelper;usingAop.Api.Util;usingMicrosoft.AspNetCore.Authorization;usingMicrosoft.AspNetCore.Http;usingMicrosoft.AspNetCore.Mvc;usingMicrosoft.Extensions.Logging;u......
  • (转)数仓建模—ID Mapping
    https://mp.weixin.qq.com/s/c9PI9Aj8IU023ktQXZgBDA?spm=a2c6h.12873639.article-detail.5.572763120dqNXJ早晨起床的时候,发现自己尿分叉,我没有多想,简单洗洗就匆忙出门。路过早餐店,我看到师傅熟练的拉扯一小块面团,拉至细长条,然后放入油锅中,不一会功夫,一根屎黄色的油条便出锅了,卖......
  • Elasticearch索引mapping写入、查看、修改
    作者:京东物流陈晓娟一、ESElasticsearch是一个流行的开源搜索引擎,它可以将大量数据快速存储和检索。Elasticsearch还提供了强大的实时分析和聚合查询功能,数据模式更加灵活。它不需要预先定义固定的数据结构,可以随时添加或修改数据字段,而不需要进行繁琐的数据库迁移。横向扩展性......
  • 最新毕设-SpringBoot-共享自习室管理系统-20672(免费领项目)可做计算机毕业设计JAVA、PH
    摘要随着现代社会竞争压力的增加以及学习需求的提升,学生们对于高效自习场所的需求日益增长。而基于springboot的共享自习室管理系统的设计与实现将为学生提供一个便捷、高效的共享自习环境,提升学生自习效率和体验。该系统可以为学生们提供在线讲座的渠道,实现在线进行预约位置......
  • 你有做过Hybrid APP开发吗?说说你的经验
    HybridApp开发的核心概念:结合Native和Web技术:HybridApp使用Web技术(HTML,CSS,JavaScript)构建用户界面,然后将其嵌入到Native容器中。这意味着你可以利用Web开发的速度和跨平台特性,同时访问设备的原生功能。跨平台框架:一些流行的框架,如Ionic,ReactNa......
  • MATH1109 - CORE MATHEMATICS
    AUTUMNSEMESTER2024-2025MATH1109-COREMATHEMATICSPythonCourseworkDeadline:15:00,Wednesday27/11/2024RulesItisnotpermittedtousegenerativeartificialintelligence(AI)softwareforthiscoursework.Ensurethatyouhavereadandhaveunderstood......
  • node.js毕设时间管理软件app程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景随着现代社会生活节奏的加快,人们面临着越来越多的任务和事务需要处理,时间管理变得至关重要。关于时间管理软件app的研究,现有研究主要以通用性的时间管理......
  • app实战运用
    一、打开模拟器二、cmd中打开dos命令adbconnect127.0.0.1:62001三、安装测试包adbinstallD:\app\baiduyuedu_3760.apk四、打开appium五、(定位元素没有xpath的就删除原有uiautomatorviewer.bat,替换成新的)开始定位,定位插件案例1:fromappiumimportweb......
  • 苹果手机群控应用:同步投屏、一键快捷打开APP与批量操作
    随着移动设备在企业和个人生活中的广泛应用,对多台iOS设备进行集中管理和控制的需求日益增长。苹果手机群控应用通过提供强大的同步投屏、一键快捷打开应用程序以及批量操作功能,使得单个管理员能够高效地管理多达上百台iPhone或iPad。本章将详细介绍这些核心功能,并探讨如何利用这些......