net core项目文件
csproj文件
作用:
- 根据编程语言所使用的文件
- 确定哪些文件属于该项目
项目目录下新增/删除文件回自动生成
1.Targetframework
指定需要的tfm(TargetFrameworkMoniker)
当然目前netcore有netcoreapp3.1 和.net5
2.AspNetCoreHostingModel
指定托管形式是进程外还是进程内(默认是进程外)
3.PackageReference
包含nuget的引用
所谓的不指定版本号,由sdk隐式指定是指不写version部分的版本号
PS:进程外与进程内
Program.cs
内容
Main:应用程序都是通过Main方法,配置相关配置文件&服务器
- Build():将上文的对象进行编译并放到对应的服务器(IIS ,APACHE,Kastrel)进行托管
- Run():接受客户端发过来的相应的请求和报文
CreateWebHostBuilder:
- 创建环境的默认值
- 内有CreateDefaultBuilder
Startup.cs
1.ConfigureServices
配置服务和内容(第三方插件等)
比如addMvc() 添加MVC服务
EF框架的Context等
2.Configure
管理运行池的管道
管道作用:相应各种http请求
中间件配置
launchSettings.json
内容
1.iissettings(iis的配置信息)
windowsAuthentication": false----默认关闭windows验证
“anonymousAuthentication”: true,----启用了匿名身份验证
启动IISExpress进行访问
2.profiles(个人配置信息)
分别配置了iis express 和项目的属性信息
commandName
启用的命令名称
是通过iisexpress启动还是通过项目本身启动 ,通过iisexpress则会通过iissetting找到对应的配置进行
profiles与项目文件csproij的AspNetCoreHostingModel的值得相互影响
当且仅当commandName配置project执行时,或者在项目目录下执行cmd并执行dotnet run时可以直接使用kestrel
项目名称.csproj
可以变更托管形式
AspNetCore中的配置源
配置源(依次加载,例如command-line时会覆盖appsettings.json的参数)
可以从源代码中看加载顺序
1.appsettings.json appsettings.{Enviroment}.json
不同的环境对应不同的托管环境
Environment是指开发环境或者是测试环境,例如appsetttings.Devolopment.json等
2.User Secrets(用户机密)
vs-右键,管理用户机密
- 优先级别较高
- 更建议在launchSetting中编写信息
这样编写的信息是存在项目本地中,而不是个人电脑,改动更为灵活方便
3.Environment Variables(环境变量)
4.Command-line arguments(命令行参数)
访问配置信息(IConfiguration)
IConfiguration 用于读取上文的配置属性
1.构造初始化IConfiguration
2.appsettings.json 设置MyKey的值
3.获取并输出appsettings.json的值
AspNetCore的中间件(MiddleWare)
1.作用:处理http请求的管道,处理权限验证等
2.流程
日志->静态文件->MVC(可能短路)
特点
- 可同时被访问和请求
- 可以处理请求后,然后将请求传递给下一个中间件
- 可以处理请求后,并使管道短路
例如MVC可以进行短路,不传送给下一个中间件,并进行反传 - 可以处理传出响应
- 中间件是按添加的顺序执行的
3.配置请求处理管道(通过app.run)
代码
正常(不能继续执行app.Run),只会执行第一个app.Run
继续执行下一个中间件(使用App.Use,传入一个可执行的委托,从而执行下一个)
中间件的处理流程:
ASP.NET Core 中间件(Middleware)详解
4.配置静态文件访问
一.概括
二.配置静态文件中间件:app.UseStaticFiles()
三.配置默认文件中间件:
app.UseDefaultFiles()
使用系统默认文件 index.html index.htm default.html等
一定要在静态文件中间件之前
只是路径重写器,所以要卸载
代码
四.配置目录访问中间件
静态文件中间件,目录访问中间件,默认文件中间件的结合,但是不推荐使用
五.配置异常中间件(一般系统会默认配置)
app.UseDeveloperExceptionPage()
app.UseDeveloperExceptionPage(developerExceptionPageOptions)
PS:尽可能提早注入,以防其他中间件异常时可以提示
AspNetCore的环境
环境类型
- Development 开发环境
- Staging 临时环境
- Production 生产环境
环境配置(lauchSetting.json)
代码环境配置
机器环境配置
PS
当代码没有配置,且机器没有配置环境时,默认为Production
优先级为代码配置>机器配置>默认(Production)
当第一遍更新机器环境时,执行代码,当前环境为Production(机器环境未生效),需要重启VS
概括