.net core 高级教程
.net core 高级教程
dabusidede
Github:https://github.com/IceEmblem,
Word文档文章:https://github.com/IceEmblem/LearningDocuments
展开
-
.net core JwtBearer 认证
原文地址:https://www.cnblogs.com/RainingNight/p/jwtbearer-authentication-in-asp-net-core.html在现代Web应用程序中,通常会使用Web, WebApp, NativeApp等多种呈现方式,而后端也由以前的Razor渲染HTML,转变为Stateless的RESTFulAPI,因此,我们需要一种标准的,通用的,无状态的,与语言无关的认证方式,也就是本文要介绍的JwtBearer认证。JwtBearer是一种认证方式Bea转载 2020-08-23 14:38:33 · 1485 阅读 · 0 评论 -
.net core log4net 配置
<?xml version="1.0" encoding="utf-8" ?><log4net> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" > <file value="App_Data/Logs/Logs.txt" /> <appendToFile value="true" /> <rolli原创 2020-08-23 13:57:03 · 294 阅读 · 0 评论 -
.net core 跨域配置
1、在使用netCore2.0 使用WebApi的过程中涉及到了跨域处理。在Microsoft.AspNetCore.All包中包含跨域Cors的处理,不必单独添加。2、打开Startup.cs文件,在ConfigureServices 中配置跨域//配置跨域处理services.AddCors(options =>{ options.AddPolicy("AnyOrigin", builder => { builder.AllowAnyOrigin()原创 2020-08-23 13:51:35 · 913 阅读 · 0 评论 -
.net core 包与框架
框架C#程序运行于.net框架上面,以下是.net的框架.NETFramework框架基于该框架的程序在安装有.NET Framework的系统上可以运行(目前只有Window系统支持.NET Framework吧),该框架不需要我们安装任何Nuget包,当我们需要调用该框架的Api时,直接添加对应库的引用即可.NetCoreApp基于该框架的程序在安装有.NETCore的系统上可以运行(Linux,Windows,OS都有对应的.NETCore,所以基于.NETCore的程序是跨平台的)使用原创 2020-08-23 13:47:40 · 486 阅读 · 0 评论 -
5 .netcore Roslyn 动态编译 编译
使用CSharpCompilation实现动态编译// 添加要引用的程序集List<MetadataReference> refs = new List<MetadataReference>() { MetadataReference.CreateFromFile (typeof (object).Assembly.Location), MetadataReference.CreateFromFile (typeof (List<int>).Assem原创 2020-08-17 12:39:24 · 1534 阅读 · 0 评论 -
4 .netcore Roslyn 动态编译 语法替换
简单的语法替换该示例将using System.Collections.Generic替换为using System static void Main(string[] args) { const string programText = @"using System.Collections.Generic;using System.Text;namespace HelloWorld{ class Program {原创 2020-08-17 12:37:11 · 340 阅读 · 0 评论 -
3 .netcore Roslyn 动态编译 语义分析
原文地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/roslyn-sdk/get-started/semantic-analysis什么是语义语法规定了代码怎么写,而语义规定了代码表达了什么意思了解编译和符号Compilation 实例是编译器所看见的单个项目符号是一个名词(如命名空间System,类Console等),其包含了描述该名词的信息(如:类型、命名空间、成员和变量的实体)Compilation 允许你查找“符号”通过Microso转载 2020-08-17 12:34:19 · 513 阅读 · 0 评论 -
2 .netcore Roslyn 动态编译 语法分析
原文地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/roslyn-sdk/get-started/syntax-analysis安装 .NET Compiler Platform SDK安装 .NET Compiler Platform SDK 我们可以在Visual Studio查看语法树执行如下步骤安装 .NET Compiler Platform SDK运行“Visual Studio 安装程序”选择“修改”检查“Visual Stud转载 2020-08-17 12:31:31 · 472 阅读 · 0 评论 -
1 .netcore Roslyn 动态编译 概念
语法树语法树是用于编译、代码分析、绑定、重构、IDE 功能和代码生成的主要结构。语法树具有三个关键特性。1.是语法树完全保真地保留所有源代码信息,即通过语法树可以看到原来的代码2.编辑语法树会创建新的树,而不会更改现有树,通过这些操作,可高效编辑文本。3.获取的树是代码当前状态的快照,不会更改。 这可让多个用户同时在不同线程中与同一语法树进行交互,而不会锁定或重复语法树实际上是一个树形数据结构,其中非终端结构化元素是其他元素的父元素。语法节点语法树由语法节点组成。如声明、语句、子句和表达式等原创 2020-08-17 12:25:38 · 671 阅读 · 0 评论 -
.net core 使用 mongodb(nosql) 数据库
首先运行mongodb服务器安装包安装MongoDB.Driver包建立模型public class Book { // 指定该字段为 mongoddb Id [BsonId] // 指定该字段的类型为 ObjectId (24位字符串) [BsonRepresentation (BsonType.ObjectId)] public string Id { get; set; } // 指定该字段的名称为 Name [BsonElement原创 2020-07-30 12:11:05 · 502 阅读 · 0 评论 -
.net core XSRF 攻击与防伪令牌
参考文档:https://www.cnblogs.com/tdfblog/p/aspnet-core-security-anti-request-forgery.htmlXSRF攻击利用浏览器访问某一站点会发送该站点的所有Cookie的原理站点B的form表单指向站点A,form的内容是B想执行的内容,当用户不经意间点了提交,浏览器将form发送至A,并携带A的cookie,而A的身份验证刚好是利用cookie来保存,那么B顺利执行其想执行的内容XSRF防护原理站点A在生成form的时候,添加了原创 2020-07-30 12:08:49 · 454 阅读 · 0 评论 -
.net core 应用单页
public IServiceProvider ConfigureServices (IServiceCollection services) { // 注册单页文件 services.AddSpaStaticFiles (configuration => { // 指定单页文件的路径 configuration.RootPath = "ClientApp/build"; });}public void Configure (IAppli原创 2020-07-30 12:05:38 · 412 阅读 · 0 评论 -
.net core 过滤器
筛选器类型每种筛选器类型都在筛选器管道中的不同阶段执行。授权筛选器:最先运行,用于确定是否已针对当前请求为当前用户授权。 如果请求未获授权,它们可以让管道短路。资源筛选器:是授权后最先处理请求的筛选器。 出于性能方面的考虑,可以使用它们来实现缓存或以其他方式让筛选器管道短路。 它们在模型绑定之前运行,所以可以影响模型绑定。操作筛选器:可以在调用单个操作方法之前和之后立即运行代码。 它们可用于处理传入某个操作的参数以及从该操作返回的结果。异常筛选器:用于在向响应正文写入任何内容之前,对未经处理的异常原创 2020-07-30 12:04:42 · 818 阅读 · 0 评论 -
.net core 内存缓存
安装包Microsoft.Extensions.Caching.Memory在setup中注册服务public void ConfigureServices (IServiceCollection services) { services.AddMemoryCache (); ...}使用public class ValuesController : ControllerBase { private IMemoryCache _cache; public V原创 2020-07-30 12:00:19 · 896 阅读 · 0 评论 -
.net core 分布式缓存
IDistributedCache接口IDistributedCache表示分布式缓存接口,其接口如下:public interface IDistributedCache{ // 获取键为key的缓存项 byte[] Get(string key); Task<byte[]> GetAsync(string key, CancellationToken token = default); // 移除键为key的缓存项 void Remove(st原创 2020-07-30 11:57:36 · 699 阅读 · 0 评论 -
.net core 代理配置
在具有代理的Http请求中,浏览器的ip和请求协议(http、https)被隐藏在X-Forwarded-*字段中,而字段Remote Address为代理服务器的地址,请求协议(http、https)为代理服务器的请求协议如果想将这些信息设置为浏览器的请求信息,请应用如下中间件.net core 中间件在中间件的开始,应用如下中间件app.UseForwardedHeaders(new ForwardedHeadersOptions{ // 将XForwardedFor和XForward原创 2020-07-30 11:53:48 · 729 阅读 · 0 评论 -
.net core 程序集的加载与卸载
.net core 2.0支持程序集动态加载,.net core 3.0支持程序集动态卸载程序集动态加载卸载使用AssemblyLoadContext每个程序都具有一个默认的AssemblyLoadContext,AssemblyLoadContext包含以加载的程序集集合,当AssemblyLoadContext被卸载时,对应的程序集也会在下一次GC回收时被回收要创建新的AssemblyLoadContext需要实现AssemblyLoadContextpublic class ActuatorA原创 2020-07-30 11:52:56 · 1174 阅读 · 0 评论 -
.net core 约定与修改
约定能做什么?约定在控制器生成前运行,我们可以修改默认的约定,如我们可以向控制器统一添加路由前缀IApplicationModelConvention 接口public interface IApplicationModelConvention{ void Apply(ApplicationModel application);}这个接口就是主要是用来自定义一些 MVC 约定的一些东西的, Apply这个方法传入一个ApplicationModel对象,我们可以利用这个对象来修改我们需要原创 2020-07-30 11:50:51 · 487 阅读 · 0 评论 -
.net core webapi 结果统一封装
统一返回格式需要用到IResultFilter过滤器,如下我们对webape的返回结果封装到AjaxResponse中public class AddHeaderFilterWithDi : IResultFilter { private ILogger _logger; public AddHeaderFilterWithDi (ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger&l原创 2020-07-30 11:44:50 · 1637 阅读 · 0 评论