从浅入深了解.NET Core MVC 2.x全面教程

一、基础

1.默认配置

  • 使用Kestrel Web Server
    • ASP.NET Core内置——跨平台
  • IIS集成
    • UseIIS()
    • UseIISIntergration()
  • Log
  • IConfiguration接口

2.IConfiguration配置信息的来源

  • appsettings.json
  • User Serets
  • 环境变量
  • 命令行参数
  • XML...

3.管道

从浅入深了解.NET Core MVC 2.x全面教程

4.MVC

从浅入深了解.NET Core MVC 2.x全面教程

5.路由Routing

  • Concentional Routing
  • Attribute Routing

6.返回View

  • Razor引擎
  • Controller——>ViewResult——>HTML页面

7.ViewModel

从浅入深了解.NET Core MVC 2.x全面教程

8.怎么使用Tag Helper

1.在【Views】文件夹中创建一个【Razor 视图导入】文件。
从浅入深了解.NET Core MVC 2.x全面教程
2.在这个文件中导入TagHelper
从浅入深了解.NET Core MVC 2.x全面教程
3.然后在视图中使用
从浅入深了解.NET Core MVC 2.x全面教程

9.输入的Model

  • Form
  • 导航到含有Form的View

10.ASP.NET Core MVC-Form

  • Http Post

11.如何使用EF Core

1.先在【appsettings.json】文件中写上连接字符串,将"xxx"替换成自己对应的数据。

  "ConnectionStrings": {     "DefaultConnction": "Server=xxx;Database=xxx;User Id=xxx;Password=xxx"   } 

2.需要安装这些包。
从浅入深了解.NET Core MVC 2.x全面教程
3.写一个【TutorialDbContext.cs】类,该类需要继承自:DbContext
从浅入深了解.NET Core MVC 2.x全面教程
从浅入深了解.NET Core MVC 2.x全面教程
4.在【Startup.cs】文件中注入服务。
从浅入深了解.NET Core MVC 2.x全面教程
在【ConfigureServices】方法中。
从浅入深了解.NET Core MVC 2.x全面教程
5.使用EF Core进行迁移,在【程序包管理控制台】输入2个命令即可。
从浅入深了解.NET Core MVC 2.x全面教程
然后会生成2个文件
从浅入深了解.NET Core MVC 2.x全面教程
可以看到已经生成了这个数据库了
从浅入深了解.NET Core MVC 2.x全面教程

12.Partial View

  • 复用View代码
  • @Html.Partial("_PartialViewName",data)
  • 没有自己的Model
  • 可以嵌套

13.View Components的特点

  • 可复用
  • 独立的组件
  • 有独立的逻辑/数据
  • 相当于迷你MVC请求
  • 不依赖于父级View的数据

14.在VS中如何使用NPM安装前端库

  • 新建一个Npm配置文件

从浅入深了解.NET Core MVC 2.x全面教程
从浅入深了解.NET Core MVC 2.x全面教程

  • 输入需要引入的库,比如我需要引入【Bootstrap】

从浅入深了解.NET Core MVC 2.x全面教程

  • 可以看到已经安装好了。

从浅入深了解.NET Core MVC 2.x全面教程

  • 这是物理文件路径。

从浅入深了解.NET Core MVC 2.x全面教程

  • 让系统伺服这个文件夹。

从浅入深了解.NET Core MVC 2.x全面教程

15.使用前端做数据校验

  • 引入Npm库

从浅入深了解.NET Core MVC 2.x全面教程

  • 在项目中引入刚刚导入的库

从浅入深了解.NET Core MVC 2.x全面教程

  • 然后前端自动起作用了(最好使用CND,速度快)

16.如何在不同的环境引入不用的库

从浅入深了解.NET Core MVC 2.x全面教程
如果CND无法访问,挂了;就加入这个回落机制。
从浅入深了解.NET Core MVC 2.x全面教程
从浅入深了解.NET Core MVC 2.x全面教程
判断Bootstrap
从浅入深了解.NET Core MVC 2.x全面教程

17.ASP.NET Core Identity

  • 身份验证和授权系统
  • 成员管理
  • 默认使用MS SQL
  • 支持外部的Provider

18.如果有多个DbContext,需要指定某一个。

从浅入深了解.NET Core MVC 2.x全面教程

19.Claim

  • 一部分信息
  • Name-Value
  • 可以来自内部或外部
  • 基于策略的(Policy)

20.Prolicy策略

  • 注册policy
  • 使用policy进行授权

21.Policy内置的方式

  • RequireAuthticatedUser:必须登录用户
  • RequireClaim:要求特定的Claim和值
  • RequireRole:要求特定的角色
  • RequireUserName:要求特定的用户名

22.Policy自定义

  • ReuireAssertion
  • AddRequirements
    • IAuthorizationRequirement
      • AuthorizationHandler<TIAuthorizationRequirement-实现IAuthorizationRequirement接口>
      • AuthorizationHandler<TIAuthorizationRequirement-实现IAuthorizationRequirement接口>
      • ...
      • 如果一个Handler返回了Succeed,而其他的都没有返回Fail,那么这个Requirement就被满足了。

23.XSS

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
从浅入深了解.NET Core MVC 2.x全面教程

24.不被信任的数据

  • HTML input
  • HTTP Headers
  • Query strings
  • Attributes,EXIF 信息

25.怎么防止XSS?

  • HTML Encoding:>变成$gt; <变成 <
    • Razor默认开启了HTML Encoding,但是可以手动关闭
  • 正则表达式
  • 反XSS的第三方库
  • 对请求进行验证

26.内置的编码器

  • HtmlEncoder
  • JavaScriptEncoder
  • UrlEncode

27.CSRF(跨站请求伪造)

从浅入深了解.NET Core MVC 2.x全面教程

28.OWASP的CSRF防范方案

  • Header验证:请求头
  • Synchronizer Token Pattern :用户每次请求时携带Token
  • Double Submit Cookie:双重Cookie

29.ASP.NET Core

  • [ValidateAntiForgeryToken]:针对一个Action
  • [AutoValidateAntiForgeryToken]:针对所有的Post
  • [IgnoreAntiForGeryToken]:取消

30.Model Binding

  • Model Binding允许我们用HTPP请求里的数据类创建C#对象,这个对象就是Action方法的参数。
  • 可以使用一下类型用来Model Binding:
    • int,string等简单数据类型
    • 复杂类型对象
    • 数组

31.Model Binder可以绑定哪些值?

  • Form的值(Body中的POST请求)
  • 路由的值
  • QueryString的值(URL地址后的参数)

32.Binding Attributes

  • Bind:有选择行的绑定属性
  • BindNver:可以放在Model对象一个属性上,表示不应该进行绑定
  • BindRequired:必须进行绑定,在验证的过程中不绑定就报错误

33.例子

1.在【ViewModel】中有一个嵌套属性。
从浅入深了解.NET Core MVC 2.x全面教程
2.在【View】视图中世界嵌套属性.属性。
从浅入深了解.NET Core MVC 2.x全面教程
3.在【Controller】中。
从浅入深了解.NET Core MVC 2.x全面教程
有选择的绑定属性,这个特性一般放在【Acion方法中】
从浅入深了解.NET Core MVC 2.x全面教程
[BindNever]放在ViewModel中。
从浅入深了解.NET Core MVC 2.x全面教程

34.指定Binding的来源,这是特性

  • [FromBody]:RequestBodys——请求的Body
  • [FromQuery]——QueryStrings
  • [FromHeader]:Request Headers——请求头找属性
  • [FromRoute]——路由
  • [FromForm]——表单的值

35.自定义验证Attribute?

1.新建一个类,这个类需要继承【Attribute】,需要实现【IModelValidator】接口。

36.远程调用-特性

  • [Remote]-客户算调用Action方法进行验证。

【在前端直接调用后台方法进行验证。】
ViewModel
从浅入深了解.NET Core MVC 2.x全面教程
Controller
从浅入深了解.NET Core MVC 2.x全面教程
从浅入深了解.NET Core MVC 2.x全面教程
View
从浅入深了解.NET Core MVC 2.x全面教程

37.Tag Helpers

  • Tag Helpers是服务器中的C#代码,他在Razor文件里,他会参与到创建和渲染HTML元素过程。
  • 和HTML Htlpers类似。
  • 跟HTML的命名规范一致。
  • 内置了很多Tag Helpers,也可以自定义。

38.JavaScript Tag Helpers

  • asp-src-include:导入文件,如:javascript
  • asp-src-exclude:将不想加入的文件加入
  • asp-fallback-src:回落机制(调用不到了[asp-src-include]文件然后就调用这个中的)
  • asp-fallvack-test:具体的

从浅入深了解.NET Core MVC 2.x全面教程
从浅入深了解.NET Core MVC 2.x全面教程

39.CSS Tag Helpers

从浅入深了解.NET Core MVC 2.x全面教程

40.其他的Tag Helpers

从浅入深了解.NET Core MVC 2.x全面教程

41.环境相关的Tag Helpers

从浅入深了解.NET Core MVC 2.x全面教程

42.自定义的TagHelpers

1.继承Tag Helpers父类,实现(Override) Process这个方法。
从浅入深了解.NET Core MVC 2.x全面教程
2.注册Tag Helpers
从浅入深了解.NET Core MVC 2.x全面教程
3.视图中
从浅入深了解.NET Core MVC 2.x全面教程
4.最后生成
从浅入深了解.NET Core MVC 2.x全面教程
5.1如果我想添加一个属性,以“-”分割大小写
从浅入深了解.NET Core MVC 2.x全面教程
5.2在这个类中添加一个属性
从浅入深了解.NET Core MVC 2.x全面教程
6.1如何直接使用下面这种方法实现上面的内容?
从浅入深了解.NET Core MVC 2.x全面教程
6.2使用【异步】的方式
从浅入深了解.NET Core MVC 2.x全面教程
7.1如果想添加一个既做为【属性】又作为【元素】的TagHelpers?
从浅入深了解.NET Core MVC 2.x全面教程
7.2代码
指定目标元素,"或"的关系,只要符合其中一种即可。
从浅入深了解.NET Core MVC 2.x全面教程
从浅入深了解.NET Core MVC 2.x全面教程

8.1如果我想添加一个颜色?
从浅入深了解.NET Core MVC 2.x全面教程
8.2添加一个属性,名称可以不一致,添加一个特性即可。
从浅入深了解.NET Core MVC 2.x全面教程
9.1如果改成类?
从浅入深了解.NET Core MVC 2.x全面教程

从浅入深了解.NET Core MVC 2.x全面教程
9.2设置属性、设置Attribute。
从浅入深了解.NET Core MVC 2.x全面教程

43.Tag Helper前缀

//加上前缀就起作用了,不加上就不起作用。
从浅入深了解.NET Core MVC 2.x全面教程

44.View Component

  • 显示部门内容
  • Mini Controller
  • 可复用
  • 只能配合父级Virew使用。

45.View Component分成两步

  • 首先需要继承ViewComponent父类
  • 实现Invoke()方法
    • 也可以是异步的:InvokeAsync()
      • 返回IViewComponentResult

二、Logging

1.诊断中间件

  • 命名空间:Microsoft.AspNetCore.Diagnostics
  • 报告信息并处理异常

2.诊断中间件

  • UseDeveloperExceptionPage:开发时使用的异常页面,异常信息
  • UseStatusCodePages:返回状态码:400-600
  • UserExceptionHandler:指定异常处理器
  • UseWelcome:当网站还在建设中

3.ASP.NET Core里的Log系统

  • EventSource
  • ILogger
  • DiagnosticSource

4.ILogger

  • 基于Providers
    • 内置
    • 可扩展使用其他的,或自己构件

5.内置的Log Providers

  • Console:控制台
  • Debug:VSDebug窗口
  • EventSource
  • EventLog:写到Windows事件中
  • TraceSource:只能应用于完整的.NET Frameword
  • Azure App Service

6.Log等级(低级——>高级)

  • Trace
  • Debug
  • Information
  • Warning
  • Error
  • Cirtical

7.添加日志信息

第一个参数是EventID,写一个常量就行;
从浅入深了解.NET Core MVC 2.x全面教程
第二个参数是要记录的日志信息;如果有2个参数就继续往后写就行了;
从浅入深了解.NET Core MVC 2.x全面教程
不建议这么写,写在一起就提出不来了;
从浅入深了解.NET Core MVC 2.x全面教程

8.第三方 Log Provider

  • Serilog
  • Nlog
  • Elmah

9.怎么在ASP.NET Core中使用Serilog?

  • 在NuGet中安装【Servilog.AspNetCore】

从浅入深了解.NET Core MVC 2.x全面教程
//如果需要输出到控制台
从浅入深了解.NET Core MVC 2.x全面教程
//输出到文件
从浅入深了解.NET Core MVC 2.x全面教程

  • 在【Program.cs】文件中Main方法中进行配置。

从浅入深了解.NET Core MVC 2.x全面教程

  • 在【Program.cs】文件中CreateWebHostBuilder方法中进行使用。

从浅入深了解.NET Core MVC 2.x全面教程

三、Filter

1.Filter

  • 用于MVC
  • 可以在MVC的请求管道里添加逻辑
    • 之前、之后
  • Cross-cutting concerns:灌穿特性
    • 避免代码重复
  • 常用场景
    • 授权
    • 需要Https

2.MVC管道

从浅入深了解.NET Core MVC 2.x全面教程

3.Filter种类

  • AuthorizationFilter:鉴权授权
  • ResourceFilter:资源过滤器
  • ActionFilter:行为方法过滤器
  • ExceptionFilter:异常过滤器
  • ResultFilter:结果过滤器

4.实现Filter

  • IFilterMetadata
    • IAtuorizationFilter,IAsyncAuthorizationFilter
    • IResourceFilter
    • IActionFilter
    • IExceptionFilter
    • IRestleFilter

5.应用Filter

  • Action
  • Controller
  • 全局

从浅入深了解.NET Core MVC 2.x全面教程

四、缓存

1.缓存的优点?

  • 提高网站的访问速度
  • 适用于不易改变的数据

2.缓存的缺点?

  • 仔细规划
  • 奇怪的副作用

3.缓存的地点?

  • 服务器
  • 缓存服务器
  • 客户端

4.In-Memory缓存

  • 内存缓存
  • IMemoryCache
  • 适用于Sticky Seesion(使用单机服务)
  • 适用于任何类型的对象

5.MemoryCacheEntryOptions

  • Absolute expiration time:绝对过期时间
  • Sliding expiration time:可调的过期时间
  • 缓存优先级
  • PostEvictionDelegate

6.怎么使用缓存?

  • 现在【Sartup.cs】的【ConfigureServices】方法中注册缓存:

从浅入深了解.NET Core MVC 2.x全面教程

  • 定义一个常量,用来做Key

从浅入深了解.NET Core MVC 2.x全面教程

  • 构造函数依赖注入缓存

从浅入深了解.NET Core MVC 2.x全面教程

  • 使用缓存

从浅入深了解.NET Core MVC 2.x全面教程

7.Cache Tag Helper

  • @await Component.IncokeAsync("xxx")
  • 服务器端
  • 使用IMemoryCache
    • Sticky Session

8.Cache Tag Helper属性

  • Enabled:是否启用
  • expires-on:绝对的过期时间
  • expires-after:时间长度
  • expires-sliding:可调的过期时间
  • vary-by-header:请求
  • vary-by-query
  • vary-by-cookie
  • vary-by-user
  • vary-by
  • priority:优先级设置

9.分布式缓存_1

从浅入深了解.NET Core MVC 2.x全面教程

10.分布式缓存_2

  • 无需Sticky Seesion
  • 可扩展
  • 服务器重启不会缓存
  • 性能更好

11.分布式缓存的接口名、方法?

  • IDistributedCache
  • Get,GetAsync
  • Set,SetAsync
  • Refresh,RefreshAsync
  • Remove,RemoveAsync

12.分布式缓存有哪几种?

  • 分布式Memory Cache:只适合开发时应用
  • 分布式 Sql Server Cache
  • 分布式 Redis Cache:实际中使用这个最多

13.怎么使用Readis分布式缓存?

  • 安装Redis(使用Docker安装)

从浅入深了解.NET Core MVC 2.x全面教程
从浅入深了解.NET Core MVC 2.x全面教程
连接、运行Redis
从浅入深了解.NET Core MVC 2.x全面教程

  • 在VS项目中安装Redis

从浅入深了解.NET Core MVC 2.x全面教程

  • 在【Startup.cs】的【ConfigureService】方法中进行注入。

从浅入深了解.NET Core MVC 2.x全面教程

  • 在Controller中构造函数依赖注入

从浅入深了解.NET Core MVC 2.x全面教程

  • 使用分布式缓存

从浅入深了解.NET Core MVC 2.x全面教程

14.Response缓存(响应缓存、客户端缓存)

  • 基于Header
  • 客户端缓存
  • 使用ResponseCache这个Attribute

15.Reponse缓存参数?

  • Location:设置缓存在哪
  • Duration:设置缓存时间的长短
  • NoStore:不应该设为缓存
  • VaryByHeader:设置通过检查哪个Header的值决定缓存

16.如何使用Reponse缓存?

  • 在【Startup.cs】注册Reponse缓存

从浅入深了解.NET Core MVC 2.x全面教程

  • 在控制器中写代码;

从浅入深了解.NET Core MVC 2.x全面教程
也可以使用之前注册的
从浅入深了解.NET Core MVC 2.x全面教程

17.压缩

  • 压缩传输的数据:1k以上的数据,如CSS、JS等可以进行压缩;

如何使用呢?
(1)在【Program.cs】中【ConfigureServices】方法中注册服务
从浅入深了解.NET Core MVC 2.x全面教程
(2)在【Program.cs】中【Configure】使用服务
从浅入深了解.NET Core MVC 2.x全面教程
没介绍完,看文档...

五、VSTS(后改名:Azure DevOps)

1.Azure DevOps

  • Saas
  • 完整的DevOps的解决方案
  • 与技术无关
  • 基于Azure
  • 集成开发团队的环境

2.Azure DevOps组件

  • 源码控制
  • 计划
  • CI
  • 发布管理
  • 测试
  • ...

3.CI-Continuouts Integeration(持续集成)

4.Azure Devops -CI

  • Build连接到测试,工作项...
  • 宿主代理
  • 针对报告
  • 支持多种语言凭他

原文链接:https://www.cnblogs.com/kimiliucn/p/17611047.html

发表评论

评论已关闭。

相关文章