ASP.NETCore

article/2025/10/7 15:02:03

0. ASP.NETCore 介绍

ASP.NETCore是一个新的开源和跨平台的框架,用于构建如Web应用、物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。ASP.NET Core应用可运行于.NET Core和完整的.NET Framework之上。构建它的目的是为那些部署在云端或者内部运行的应用提 供一个优化的开发框架。它由最小开销的模块化的组件构成,因此在构建解决方案的同时可以 保持灵活性。我们可以在Windows、Mac和Linux上跨平台开发和运行自己的ASP.NET Core 应用。

ASP.NETCore 开源在 GitHub 上。ASP.NET Core有一些架构上的改变,这些改变使得它成为一个更为精简并且模块化的框架。ASP.NET Core不再基于System.Web.dll。当前它基于一系列颗粒化的,并且有良好构建的 NuGet包。这一特点能够让你通过仅仅包含需要的NuGet包的方法来优化你的应用。一个更小 的应用程序接口通过“只为你需要的功能付出”(pay-for-what-you-use)模型获得的好处包括: 可靠的安全性、简化服务、改进性能和减少成本。

通过ASP.NET Core可以获得的改进如下:

  • 一个统一的方式用于构建Web UI和Web APIs。

  • 集成现代的客户端开发框架和开发流程。

  • 一个适用于云的,基于环境的配置系统。

  • 内置的依赖注入。

  • 新型的、轻量级的、模块化HTTP请求管道。

  • 运行于IIS或者自宿主(self_host)于你自己的进程的能力。

  • 基于支持真正的side-by-side应用程序版本化的.NET Core构建。

  • 完全以NuGet包的形式发布。

  • 新的用于简化现代Web开发的工具。

  • 可以在Windows、Mac和Linux上构建和运行跨平台的ASP.NET应用。

  • 开源并且重视社区。

1. ASP.NETCore 应用

使用VS 2017新建一个Web应用,打开VS 2017创建一个新的解决方案,在解决方案中新建一个项目,在添加新项目窗口中选择 .NET Core,选择ASP.NETCore Web应用程序,如下图所示:

这里的实例我们使用 Web Application (MVC) 框架版本为 .NET Core 2.1 如下图所示:

选择ASP.NET Core 项目模板

一个ASP.NET Core 应用其实就是在 Program 类的 Main方法调用 WebHost.CreateDefaultBuilder方法,创建了一个默认的Web应用程序宿主(Web服务器)。相比于.NET Core 1.0 在.NET Core 2.x 少了许多配置,新的方式已经隐藏了很多细节, 在WebHost.CreateDefaultBuilder这个函数内部帮助我们完成了大部分的配置工作(启用了Web服务器 UseKestrel、配置内容根目录 UseContentRoot等)。

在下面的代码中,Main方法创建了一个默认的Web服务器,并指定Startup类(UseStartup)的方法。下面会讲解更多关于 Startup 的内容。BuildRun 方法构建了用于宿主应用程序的 IWebHost,然后启动它来监听传入的HTTP请求。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;namespace WebApplicationDome
{public classProgram{public staticvoidMain(string[] args){CreateWebHostBuilder(args).Build().Run();}public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args).UseStartup<Startup>();}
}

2. 服务器

ASP.NET Core 托管模式并不直接监听请求,而是依赖于一个 HTTP Server 实现来转发请求到应用程序。这个被转发的请求会以一组 feature 接口的形式被包装,然后被应用程序组合到一个 HttpContext 中去。ASP.NET Core 包含了一个托管的跨平台Web服务器:Kestrel,它往往会 被运行在一个如 IIS 或者 Nginx 的生产 Web 服务器之后。


3. Startup.cs

WebHostBuilderExtensions 的 UseStartup 方法为你的应用指定了 Startup 类。

Startup类是应用程序的入口(entrypoint),这个类可以用来定义请求处理管道和配置应用需耍的服务。

Startup 类必须是公开的 (public)。

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

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

public classStartup
{// This method gets called by the runtime. Use this method to add services to the container.public voidConfigureServices(IServiceCollection services){}// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.public voidConfigure(IApplicationBuilder app, IHostingEnvironment env){}
}

在ASP.NETCore中,Startup类提供了应用程序的入口,而且在所有应用程序都有Startup类。可能会存在特定环境的启动类和方法,但无论如何,Startup 类都将被充当为应用程序的启动点。

1). ConfigureServices方法

ConfigureServices 方法用于定义应用程序所使用的服务。通过依赖注入可将服务加入服务容器(IoC容器),使其在应用程序中可用。正如 Startup 类能将指定的依赖项作为其方法参数——而不足硬编码(hard-coding)来实例化特定实现,在应用程序中的其他类都可以做到这一点。通过在 IServiceCollection 上使用扩展方法来包装需要大量配置细节的 ConfigureServices。在下面的例子(使用了默认的Web应用程序MVC模板)中看到 ConfigureServices 方法中有个 AddMvc 的扩展方法被用于设罝应用程序能够使用MVC服务:

public voidConfigureServices(IServiceCollection services)
{services.Configure<CookiePolicyOptions>(options =>{// This lambda determines whether user consent for non-essential cookies is needed for a given request.options.CheckConsentNeeded = context => true;options.MinimumSameSitePolicy = SameSiteMode.None;});services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

2). Configure方法

Configure方法用于指定ASP.NET方法用于指定ASP.NET应用程序将如何响应每一个HTTP请求。简单来说,你可以配置每个请求都接收相同的响应。然而,大多数实际的应用程序都需要比这更多的功能。更复杂的管道配置可以封装于中间件(middleware)中,并通过扩展方法添加到 lApplicationBuilder 上。Configure 方法必须接受一个 IApplicationBuilder 参数。一些额外服务,比如 IHostingEnvironmentILoggerFactory 也可以被指定,并且在它们可用的情况下,这些服务将会被服务器注入进来。在下面的例子(来源于默认的Web应用程序MVC站点模板),多个扩展方法被用于配罝管道,以支持错误页、静态文件、ASP.NET MVC路由。

public voidConfigure(IApplicationBuilder app, IHostingEnvironment env)
{if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseExceptionHandler("/Home/Error");app.UseHsts();}app.UseHttpsRedirection(); // 添加HTTPS重定向中间件app.UseStaticFiles();    // 添加静态文件中间件app.UseCookiePolicy();   // 使用Cookie策略中间件app.UseMvc(routes =>    // 使用MVC中间件{routes.MapRoute(name: "default",template: "{controller=Home}/{action=Index}/{id?}");});
}

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

在下一节中间件,将会介绍更多有关中间件的信息,包括使用 IApplicationBuilder 来定义请求管道,创建自己的自定义中间件。

3). 在启动时服务可用

ASP.NETCore在应用程序启动期间提供了一些应用服务和对象。使用这些服务的方法非常简单,只要在 Startup 类的构造函数中包含合适的接口,或是在它的 Configure方法、ConfigureServices方法中包含合适的接口即可。下面定义了在Startup类中对每个方法可用的服务。框架服务和对象包括如下内容:

①. IApplicationBuilder

被用于构建应用程序的请求管道。只能在 Startup 中的 Configure方法里使用。

②. IApplicationEnvironment

提供了访问应用程序属性,类似于ApplicationNamc、ApplicationVersion以及 ApplicationBasePath。可以在Startup的构造函数和Configure方法中使用。

③. IHostingEnvironment

提供了当前的EnvironmentName、WebRootPath以及Web根文件提供者。可以在Startup的构造函数和Configure方法中使用。

④. LoggerFactory

提供了创建日志的机制。可以在 Startup的构造函数或 Configure 方法中使用,更多请阅读 Logging。

⑤. IServiceCollection

当前容器中各服务的配置集合。只能在 ConfigureServices 方法中使用。只有在 ConfigureServices方法中配罝后,此服务在应用程序中才变得可用。

看看Startup类中按它们被调用排序的每一个方法,下面的服务可作为参数:

  • Startup构造函数: IApplicationEnvironment, IHostingEnvironment, ILoggerFactory

  • ConfigureServiccs方法: IServiccCollcction

  • Configure方法: IApplicationBuilder, IApplicationEnvironment, IHostingEnvironment, ILoggerFactory

4. 服务

服务是应用程序中用于通用调用的组件。服务通过依赖注入获取并使用。ASP.NET Core内置了一个简单的控制反转(IoC)容器,它默认支持构造器注入,并且可以方便地替换成你自己选用的 IoC 容器。由于它的松耦合特性,依赖注入(DI)使服务在整个应用中都可以使用。例如,Logging 在整个应用中都可用。

5. 内容根目录

内容根目录是应用程序所用到的所有内容的根路径,比如它的 views 和 web内容。默认情况下,内容根目录是与宿主应用的可执行程序的应用根目录相同:其他位罝可以通过 WebHostBuilder 来设置。

6. Web根目录

应用程序的 Web根目录是项目中类似于 CSS、JS和图片文件公开、静态的资源的目录。静态文件中间件将默认只读取Web根目录和其子目录中的文件。Web根目录默认为[content root]/wwwroot。(可以通过WebHostBuilder来指定另外一个地址)

7. 配置

ASP.NET Core使用了一个新的配置模型,用来处理简单的键值对。新的配置模型不是基于 System.Configuration 或者 web.config;相反,它足一个有序拉取数据的配置 providers。内置的构造提供支持多种不同的文件格式,如 XML、JSON、INI和用于支持基于环境的配置环境变量,也可以自己编写实现自定义的配罝providers。

8. 环境

ASP.NETASP.NET Core 支持在多个环境中管理应用程序行为,如开发Development,预演staging和生产Production,是ASP.NET Core中的第一级概念,而且它可以使用环境变量来配置。


http://chatgpt.dhexx.cn/article/hNcW99gZ.shtml

相关文章

基于asp.netCoreWebApi的webSocket通信示例(net6)

背景&#xff1a; 在阿里云服务器中搭建了常规的tcp server服务&#xff08;基于.net framework 4.0&#xff09;。用以实现远程控制家里的鱼缸灯&#xff0c;办公室的电脑开关机等功能。客户端采用PC桌面端和微信小程序端。 服务端&#xff1a;tcp server(基于.net framework …

超轻量级Web安全漏洞扫描工具Netsparker使用教程介绍

Netsparker是一款web应用安全漏洞扫描工具 Netsparter官网&#xff1a;https://www.netsparker.com/web-vulnerability-scanner/&#xff0c;与其他安全扫描工具相比更好检测SQL注入和跨站脚本攻击类型的安全漏洞。 打开工具&#xff0c;点击start a new scan&#xff0c;选择…

黑客最常用的10款黑客工具

以下所有这些工具都是捆绑在一起的Linux发行版&#xff0c;如Kali Linux或BackBox&#xff0c;所以我们一定会建议您安装一个合适的Linux黑客系统&#xff0c;使您的生活更轻松 - 尤其是因为这些黑客工具可以&#xff08;自动&#xff09;更新。 1、Nikto&#xff08;网站漏洞…

安全扫描工具 Netsparker

Netsparker是一款web应用安全漏洞扫描工具 Netsparter官网&#xff1a;https://www.netsparker.com/web-vulnerability-scanner/&#xff0c;与其他安全扫描工具相比更好检测SQL注入和跨站脚本攻击类型的安全漏洞。 打开工具&#xff0c;点击start a new scan&#xff0c;选择…

常用wed扫描工具 awvs|appscan|Netsparker|Nessus

一、awvs 是一款知名的自动化网络漏洞扫描工具 功能介绍&#xff1a; 1.WebScanner&#xff1a;全站扫描&#xff0c;Web安全漏洞扫描 2.Site Crawler&#xff1a;爬虫功能&#xff0c;遍历站点目录结构 3.Target Finder&#xff1a;端口扫描&#xff0c;找出web服务器 4.Sub…

Netsparker超轻量级Web安全漏洞扫描工具使用教程介绍

有特征 此工具分为收费版本和绿色版本 绿色版本也是很强大的 一 、Netsparker工具简介 Netsparker是一款综合型的web应用安全漏洞扫描工具&#xff0c;它分为专业版和免费版&#xff0c;免费版的功能也比较强大。Netsparker与其他综合 性的web应用安全扫描工具相比的一个特…

了解Netsparker扫描器

Netsparker是一款综合型的Web应用安全漏洞扫描工具&#xff0c;它分为专业版和免费版&#xff0c;免费版的功能也比较强大。Netsparker与其他综合性的Web应用安全扫描工具相比的一个特点是它能过更好的检测SQL Injection和Cross-site Scripting类型的安全漏洞。 一、使用Netspa…

Web安全—Web漏扫工具NetSparker安装与使用

本文仅用于安全学习使用&#xff01;切勿非法用途。 一、NetSparker概述 Netsparker 是一款综合型的 web 应用安全漏洞扫描工具&#xff0c;它分为专业版和免费版&#xff0c;免费版的功能也比较强大。Netsparker 与其他综合性的 web 应用安全扫描工具相比的一个特点是它能够更…

2022 年顶级网络安全专家最爱用的10大工具

​目录 1. Nmap (Network Mapper)网络映射器 2. Nessus 3. Nikto 4. Kismet 5. NetStumbler 6. Acunetix 7. Netsparker网络火花 8. Intruder 9. Nmap 10. Metasploit 如何使用这些软件&#xff1f; 结论 ​ 网络安全专家&#xff0c;不是你认为的那种搞破坏的网络…

csdn的markdown编辑器基本语法(整理版)

文章目录 0 文章目录名1 标题2 字体设置3 文本设置4 按键展示5 功能快捷键6 生成适合的列表7 插入链接与图片8 插入代码段9 创建表格9.1 创建简单表格9.2 html表格 10 UML 图表10.1 序列图&#xff1a;10.2 普通流程图:10.3 FLowchart流程图10.4 甘特图 11 KaTeX数学公式 0 文章…

64位windows10,打不chm文件问题,终于解决了。。。

公司新给配了一台win10笔记本&#xff0c;发现打不开chm文件&#xff0c;度娘给的方案都是修改文件属性解除锁定之类的&#xff0c;根本解决不了问题。 经过几天研究&#xff0c;发现将chm文件拖放到 SysWOW64中的hh.exe可以打开 于是决定修改chm文件关联打开程序 直接修改无果…

chm转txt(chm转txt格式转换器安卓)

chm转txt格式转换器-有没有可以将CHM电子书格式转换为TXT格式的软件. 有一个叫DeCompiler的软件,可以将你说的CHM文件转换面原来生成chm文件时的网页文件(htm,html),呵呵~~应该可以满足你的用处吧~~ 你在网上按这个名字找一下,如果找不到发邮件给我,我发给你~ fjd0105 求txt转…

易维清使用技巧:CHM编辑利器

易维清源代码生成软件不但是一款专业的管理信息系统源代码生成器&#xff0c;其附带的编辑帮助信息功能更是CHM编辑利器。而且&#xff0c;免费试用版中的这个功能完全没有削减的哦&#xff0c;不花钱就可以帮你轻松编辑生成完美的CHM&#xff0c;官方下载地址&#xff1a;www.…

CSDN Markdown编辑器 图片对齐方式(居中/左对齐/右对齐)及图片大小

Markdown图片对齐方式&#xff08;居中/左对齐/右对齐&#xff09;及图片大小 一、图片对齐方式1.居中2.右对齐、左对齐 二、图片大小 说明&#xff1a;加载图片给有两种方式&#xff0c;一种用网页图片链接&#xff0c;另一种上传本地图片。 获得图中方框中的图片链接为&…

vim编辑器下载Linux版,强大的vim编辑器【下载!linux基础命令豪华版】

vi编辑器学习三 4.编辑操作 进入输入模式命令 i插入命令 a附加命令 o打开命令 c修改命令 r取代命令 s替换命令 Esc退出命令 输入模式的操作 Home光标到行首 End 光标到行尾 Page Up和Page Down上下翻页 Delect删除光标位置的字符 删除操作(命令模式使用) x删除光标处的单个字符…

MD编辑器用法讲解

文章目录 为什么写这个&#xff1f;0. 介绍一下md&#xff1f;1 纯md语法的使用1.1 快捷键1.2 字符效果和横线等1.2.1 横线1.2.2 删除线1.2.3 斜体字1.2.4 粗体1.2.5 粗斜体1.2.6 上标与下标1.2.7 **缩写(同HTML的abbr标签)**1.2.8 引用 Blockquotes 1.3 各级标签 标签 1标签 2…

CSDN - markdown 编辑器模板

CSDN - markdown 编辑器模板 # <center>CSDN - markdown 编辑器模板</center>**Markdown 编辑器**欢迎页。## 1. 功能拓展与语法支持Markdown 编辑器功能拓展与语法支持&#xff1a;1. 在创作中心设置代码高亮样式&#xff0c;Markdown **将代码片显示选择的高亮样…

树视图编辑器

![ 在这里插入图片描述 ](https://img-blog.csdnimg.cn/20210304200742955.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2lsb3ZleW91YW55bW9yZQ,size_16,color_FFFFFF,t_70)

在线word编辑html,eWebEditor - 在线HTML编辑器,HTML在线编辑

本地文件自动上传&#xff1a; 利用本地文件自动上传功能&#xff0c;可以把编辑器内容中含有本地的图片、图表等文件自动上传到服务器。使内容发布后&#xff0c;浏览者也可以看到或下载此文件&#xff0c;而不是只有自己可以看到或下载到。您不需要一个一个文件的插入并上传&…

《MarkDown编辑器的使用技巧(修改录入方式与目录生成)|CSDN编辑器测评》

《MarkDown编辑器的使用技巧(修改录入方式与目录生成)&#xff5c;CSDN编辑器测评》 CSDN的 Markdown 编辑器是当前是编辑效率较高的编辑器&#xff0c;那么我在其使用过程中最【稀罕】的是目录功能。本编文章教会你修改【MarkDown编辑器】的设置&#xff0c;以及快速创建目录…