CORE 中间件、wwwroot

ASP.NET Core中间件组件是被组装到应用程序管道 中以处理HTTP请求和响应 的软件组件(从技术上来说,组件只是C#类)。

ASP.NET Core应用程序中的每个中间件组件执行以下任务。

选择是否将 HTTP 请求传递给管道中的下一个组件。这可以通过在中间件中调用下一个 next() 方法实现。

可以在管道中的下一个组件之前和之后执行工作。

在ASP.NET Core中,已经有很多内置的中间件组件可供使用,您可以直接使用它们。 如果需要,还可以在ASP.NET Core应用程序中创建自己的中间件组件。

您需要牢记的最重要的一点是,在ASP.NET Core中,给定的中间件组件应仅具有特定目的,即单一职责

中间件执行顺序

ASP.NET Core中间件组件的执行顺序与添加到管道中的顺序相同。 因此,在将中间件组件添加到请求处理管道时

csharp 复制代码
namespace WebApplication2
{
    public class Program
    {
        public static void Main(string[] args)
        {
            /*
           * WebApplication 表示整个Web应用程序 ,调用CreateBuilder()方法创建一个
             WebApplicationBuilder 对象。 
           * */
            var builder = WebApplication.CreateBuilder(args);

            // Add services to the container.
            /*
             WebApplicationBuilder 对象添加 RazorPages 服务 , 
             也可以添加其他服务,比如依赖注入、   登录等。
             */
            builder.Services.AddRazorPages();
            //构造一个 WebApplication 实例。
            var app = builder.Build();

            // Configure the HTTP request pipeline.
            if (!app.Environment.IsDevelopment())
            {
                //异常处理中间
                app.UseExceptionHandler("/Error");
            }
            //启用静态文件中间件,加上这行代码后, 我们在浏览器中才能访问 wwwroot 目录下的文件,否则会报错。
            app.UseStaticFiles();
            //启用路由中间件,启用后在浏览器中输入网址 Web应用才能正确解析
            app.UseRouting();
            //启用权限验证中间件,当我们的网站是基于身份认证的话需要用到,
            //一般购物网站都需要启用,如果只是纯展示性的比如企业官网等可以去掉。
            app.UseAuthorization();
            //启用Razor Pages中间件,如果是MVC应用,则使用 app.UseMvc(); 中间件。
            app.MapRazorPages();
            //启动应用,当我们开始执行WebApp , 浏览器就会帮我们打开网站 Index 页面了,
            app.UseEndpoints(endpoints=>
            {
                endpoints.MapGet("/",async context => {
                    await context.Response.WriteAsync("======");
                });
            });
            app.Run();
        }
    }
}
定义默认页面 默认查找的顺序
  1. default.htm
  2. default.html
  3. index.htm
  4. index.html

//定义默认页面

app.UseDefaultFiles()

// 可以访问静态文件

app.UseStaticFiles()

》》》必须在启用静态文件中间件之前,先启用默认文件中间件

》》》=================

DefaultFilesOptions options = new DefaultFilesOPtions();

options.DefaultFileNames.clear();// 清空默认的

options.DefaultFileNames.Add("Default_index.html");

app.UseDefaultFiles(options);

// 可以访问静态文件

app.UseStaticFiles()

**注意:**您需要在UseStaticFiles()中间件之前添加UseDefaultFiles()中间件,以便提供默认文件。 您需要记住的一点是UseDefaultFiles()中间件只是URL重写器,它永远不会提供静态文件。 该中间件的工作是简单地将传入URL重写为默认文件,然后由静态文件中间件提供服务。

》》》 UseFileServer 包含了 UseStaticFiles、UseDefaultFiles 功能

FileServerOptions options = new FileServerOptions();

options.DefaultFilesOptions.DefaultFileNames.Clear();

options.DefaultFilesOptions.DefaultFileNames.Add("Default_index.html");

app.UseFileServer(options);
UseFileServer它将静态文件中间件、默认文件中间件的功能结合起来啦。 注意UseFileServer 默认不启用目标浏览,但是支持修改此行为

添加 自己 MIME 类型

经典Asp.net web 应用程序,添加缺少的 MIME类型是在IIS内执行的配置任务,但是,在Asp.Net Core 应用中,IIS(以及其它平台上的Web服务器)只是作为反向代理,将传入的请求简单的转发给 Asp.net core 内置的Web服务器(kestrel),请求将从这里开始穿过请求管道。不过,必须通过代码配置这个管道。

csharp 复制代码
            StaticFileOptions options =new StaticFileOptions();
            var provider = new FileExtensionContentTypeProvider();
            // 添加自定义的MIME类型
            provider.Mappings[".myextension"] = "application/my-custom-type";
            provider.Mappings[".script"] = "text/javascript";
            provider.Mappings.Remove(".png");
            options.ContentTypeProvider = provider;
            app.UseStaticFiles(options);

Use、Run




UseEndpoints 终点中间件

wwwroot
相关推荐
波波0071 天前
每日一题:中间件是如何工作的?
中间件·.net·面试题
玄同7651 天前
LangChain 1.0 框架全面解析:从架构到实践
人工智能·深度学习·自然语言处理·中间件·架构·langchain·rag
dear_bi_MyOnly2 天前
【多线程——线程状态与安全】
java·开发语言·数据结构·后端·中间件·java-ee·intellij-idea
玄同7653 天前
LangChain v1.0+ 与 FastAPI 中间件深度解析:从概念到实战
人工智能·中间件·langchain·知识图谱·fastapi·知识库·rag
坚持学习前端日记3 天前
容器化中间件的优缺点
java·中间件
BLUcoding3 天前
使用 Docker Compose 安装常用中间件
docker·中间件·容器
沐雪架构师4 天前
LangChain 1.0 内置的Agent中间件详解
中间件·langchain
木子啊4 天前
PHP中间件:ThinkCMF 6.x核心利器解析
开发语言·中间件·php
CTO Plus技术服务中5 天前
大数据、开发环境、中间件、数据库运维开发教程
大数据·数据库·中间件