ASP.NET Core

C# 9 新特性:代码生成器、编译时反射

大兔子大兔子 提交于 2020-05-02 09:54:03
前言 今天 .NET 官方博客宣布 C# 9 Source Generators 第一个预览版发布,这是一个用户已经喊了快 5 年特性,今天终于发布了。 简介 Source Generators 顾名思义代码生成器,它允许开发者在代码编译过程中获取查看用户代码并且生成新的 C# 代码参与编译过程,并且可以很好的与代码分析器集成提供 Intellisense、调试信息和报错信息,可以用它来做代码生成,因此也相当于是一个加强版本的编译时反射。 使用 Source Generators,可以做到这些事情: 获取一个 Compilation 对象,这个对象表示了所有正在编译的用户代码,你可以从中获取 AST 和语义模型等信息 可以向 Compilation 对象中插入新的代码,让编译器连同已有的用户代码一起编译 Source Generators 作为编译过程中的一个阶段执行: 编译运行 -> [分析源代码 -> 生成新代码] -> 将生成的新代码添加入编译过程 -> 编译继续。 上述流程中,中括号包括的内容即为 Source Generators 所参与的阶段和能做到的事情。 作用 .NET 明明具备运行时反射和动态 IL 织入功能,那这个 Source Generators 有什么用呢? 编译时反射 - 0 运行时开销 拿 ASP.NET Core 举例,启动一个 ASP.NET

.Net Core3.1下使用Swagger搭建web api项目

痞子三分冷 提交于 2020-05-02 09:53:54
前言:微软于前天发布.net core 3.1正式版,并将长期支持3.1。所以我听到这个消息后就急忙下载.net core 3.1的SDK和Runtime,应该是公司最先用3.1的攻城狮了😄。 OK!废话少说,今天的目的是基于.net core 3.1建一个web api的项目 先下载.net core 3.1的SDK(开发.net core项目时会用到)和Runtime(用来运行.net core的应用程序) 地址: https://dotnet.microsoft.com/download/visual-studio-sdks?utm_source=getdotnetsdk&utm_medium=referral 创建ASP.NET Core web项目 ps:不要选错了😂 这里说一下项目目录下的各个文件的作用 引入Swashbuckle.AspNetCore程序包 执行以下命令 Install-Package Swashbuckle.AspNetCore -Version 5.0 . 0 -rc4 添加 并配置Swagger中间件 services.AddSwaggerGen(c => { c.SwaggerDoc( " v1 " , new OpenApiInfo { Title = " My API " , Version = " v1 " }); }); app

asp.net core 集成JWT(一)

纵然是瞬间 提交于 2020-05-02 09:53:35
【什么是JWT】   JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。   JWT的官网地址: https://jwt.io/   通俗地来讲,JWT是能代表用户身份的令牌,可以使用JWT令牌在api接口中校验用户的身份以确认用户是否有访问api的权限。   JWT中包含了身份认证必须的参数以及用户自定义的参数, JWT可以使用秘密(使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对进行 签名 。 【什么时候应该使用JSON Web令牌?】 授权:这是使用JWT的最常见方案。一旦用户登录,每个后续请求将包括JWT,允许用户访问该令牌允许的路由,服务和资源。Single Sign On是一种现在广泛使用JWT的功能,因为它的开销很小,并且能够在不同的域中轻松使用。 信息交换:JSON Web令牌是在各方之间安全传输信息的好方法。因为JWT可以签名 - 例如,使用公钥/私钥对 - 您可以确定发件人是他们所说的人。此外,由于使用标头和有效负载计算签名,您还可以验证内容是否未被篡改。 【JWT有什么优势?】   我们先看我们传统的身份校验方式 用户向服务器发送用户名和密码。 服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。 服务器向用户返回一个 session_id,写入用户的 Cookie。

C# 9 新特性:代码生成器、编译时反射

ⅰ亾dé卋堺 提交于 2020-05-02 09:43:03
前言 今天 .NET 官方博客宣布 C# 9 Source Generators 第一个预览版发布,这是一个用户已经喊了快 5 年特性,今天终于发布了。 简介 Source Generators 顾名思义代码生成器,它允许开发者在代码编译过程中获取查看用户代码并且生成新的 C# 代码参与编译过程,并且可以很好的与代码分析器集成提供 Intellisense、调试信息和报错信息,可以用它来做代码生成,因此也相当于是一个加强版本的编译时反射。 使用 Source Generators,可以做到这些事情: 获取一个 Compilation 对象,这个对象表示了所有正在编译的用户代码,你可以从中获取 AST 和语义模型等信息 可以向 Compilation 对象中插入新的代码,让编译器连同已有的用户代码一起编译 Source Generators 作为编译过程中的一个阶段执行: 编译运行 -> [分析源代码 -> 生成新代码] -> 将生成的新代码添加入编译过程 -> 编译继续。 上述流程中,中括号包括的内容即为 Source Generators 所参与的阶段和能做到的事情。 作用 .NET 明明具备运行时反射和动态 IL 织入功能,那这个 Source Generators 有什么用呢? 编译时反射 - 0 运行时开销 拿 ASP.NET Core 举例,启动一个 ASP.NET

二、Core授权-2 之.net core 基于Jwt实现Token令牌(策略)

对着背影说爱祢 提交于 2020-05-02 09:22:49
Authorization其目标就是验证Http请求能否通过验证。ASP.Net Core提供了很多种Authorization方式,详细可以参考 微软官方文档 。在这里只详细介绍三种方式: Policy Middleware Custom Attribute 一、Role授权 代码如下: #region jwt验证 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidIssuer = Configuration[ " Jwt:Issuer " ], ValidAudience = Configuration[ " Jwt:Audience " ], IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration[ " Jwt:SecretKey " ])) }; }); #endregion 在Claim中设置了Role 所以我们可以将 [Authorize] 标签写成[Authorize(Roles=

ASP.NET Core 认证与授权[7]:动态授权

假如想象 提交于 2020-05-02 09:07:06
原文: ASP.NET Core 认证与授权[7]:动态授权 ASP.NET Core 中基于策略的授权旨在分离授权与应用程序逻辑,它提供了灵活的策略定义模型,在一些权限固定的系统中,使用起来非常方便。但是,当要授权的资源无法预先确定,或需要将权限控制到每一个具体的操作当中时,基于策略的授权便不再适用,本章就来介绍一下如何进行动态的授权。 目录 基于资源的授权 定义资源Requirement 实现资源授权Handler 调用AuthorizationService 基于权限的授权 定义权限项 定义权限Requirement 实现权限授权Handler 使用策略授权 自定义授权过滤器 在视图中使用授权 基于资源的授权 有些场景下,授权需要依赖于要访问的资源,例如:每个资源通常会有一个创建者属性,我们只允许该资源的创建者才可以对其进行编辑,删除等操作,这就无法通过 [Authorize] 特性来指定授权了。因为授权过滤器会在我们的应用代码,以及MVC的模型绑定之前执行,无法确定所访问的资源。此时,我们需要使用基于资源的授权,下面就来演示一下具体是如何操作的。 定义资源Requirement 在基于资源的授权中,我们要判断的是用户是否具有针对该资源的某项操作,因此,我们先定义一个代表操作的 Requirement : public class MyRequirement :

【大道至简】NetCore3.1快速开发框架一:集成Swagger

≡放荡痞女 提交于 2020-05-02 08:28:04
在上一章节中,我们创建了基本的框架结构: https://www.cnblogs.com/fuyu-blog/p/12217647.html 下面我们测试接口和集成Swagger接口文档 一、接口测试 在默认创建的API中,大大和2.2不一样的是给了一个默认的接口示例,但不是Values了,变成了一个天气预报,【为什么呢~~~】 好吧,不管是Values还是天气预报,只要能运行起来,就是好大大 在Api项目右击,点击选择运行,或者在工具栏,点击运行-启动而不调试 自动会打开浏览器,运行成功 下一步,我们自己新建的接口测试一下 在API项目中,Controller文件夹,右击新建文件 选择ASP.NET Core ——Web Api控制器类,输入一个自己写的名字,点击新建按钮 这样一个简单的接口测试类就生成了 生成项目F6 输入测试地址: https://localhost:5001/api/values 访问成功 二、集成Swagger接口文档 在FytSoa.Api项目右击依赖项中,选择管理nuget包,并搜索Swashbuckle.AspNetCore包添加至引用 添加成功 在 Startup 类中 添加并配置 Swagger 中间件 public void ConfigureServices(IServiceCollection services) { services

在IIS上部署你的ASP.NET Core项目

 ̄綄美尐妖づ 提交于 2020-05-02 06:34:32
概述 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Core程序中,随后就将接收到的请求推送至中间件管道中去,处理完你的请求和相关业务逻辑之后再将HTTP响应数据重新回写到IIS中,最终转达到不同的客户端(浏览器,APP,客户端等)。而配置文件和过程都会由些许调整,中间最重要的角色便是AspNetCoreModule,它是其中一个的IIS模块,请求进入到IIS之后便立即由它转发,并迅速重定向到ASP.NET Core项目中,所以这时候我们无需设置应用程序池来托管我们的代码,它只负责转发请求而已。 部署之前要确保你的IIS上已经安装了AspNetCoreModule托管模块,如果没有的话,点击 这里 进行下载并安装 一、安装IIS 1、在控制面板→程序→启用或关闭Windows功能→勾选Internet Information Services以及Web管理工具下的IIS管理控制台 二、发布项目 1、发布我们上一篇建好的ASP.NET Core API项目,然后选择IIS,新建一项发布配置 2、发布方法选择文件系统,然后设置一个发布路径 3、配置文件可以根据你线上、线下的环境进行选择,因为是基于.NET

NetCore 3.0 中使用Swagger生成Api说明文档及升级报错原因

北城以北 提交于 2020-05-02 04:44:54
认识Swagger Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。 作用: 接口的文档在线自动生成。 功能测试。 为什么使用Swagger作为REST APIs文档生成工具 Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API。 Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。 Swagger 文件可以在许多不同的平台上从代码注释中自动生成。 Swagger 有一个强大的社区,里面有许多强悍的贡献者。 安装Nuget包搜索Swashbuckle.AspNetCore 因为是.NetCore3.0 ,所以一定要勾选包括预览发行版,安装最新预发行版 5.0.0-rc4,千万不要安装最新稳定版。稳定版会报错。 稳定版报错信息: 1 Some services are not able to be constructed (Error while validating the service descriptor ' ServiceType: 2 Swashbuckle.AspNetCore.Swagger.ISwaggerProvider

上周热点回顾(10.7-10.13)

筅森魡賤 提交于 2020-05-01 23:20:58
热点随笔: · 富士康14跳被我赶上了,流水线车间真的没有梦想 | 十年系列 ( 纯洁的微笑 ) · [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇] ( Artech ) · .NET开发者必须学习.NET Core ( 张善友 ) · 面试官:你有m个鸡蛋,如何用最少的次数测出鸡蛋会在哪一层碎? ( yuanrw ) · 2019 中国.NET 开发者峰会正式启动 ( 张善友 ) · dotnetcore+vue+elementUI 前后端分离---支持前端、后台业务代码扩展的快速开发框架 ( bububu。 ) · 每次阅读外文技术资料都头疼,终于知道原因了。 ( 咖啡机(K.F.J) ) · 使用 .NET Core 3.0 的 AssemblyLoadContext 实现插件热加载 ( q303248153 ) · [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇] ( Artech ) · 琐事回忆:从来就没有轻易成功的软件项目 ( 溪源More ) · 开源大阅兵:盘点那些走向世界的中国项目 ( 程序猿DD ) · asp.net core 3.0 更新简记 ( WeihanLi ) 热点新闻: · 诺贝尔物理学奖得主:人类注定要永远生活在地球上 · PS成美国制裁手段:禁运国家停止服务但不退款