- 博客(47)
- 收藏
- 关注
原创 在 Windows 使 .NET 应用容器化
文章目录先决条件一、安装 WSL2二、创建 .NET 应用三、创建 Dockerfile四、创建容器五、管理容器参考文档先决条件安装 .NET SDK 6.0安装 Docker 社区版一、安装 WSL2# 此命令将启用所需的可选组件> wsl --install# 将 WSL 2 设置为默认版本> wsl --set-default-version 2# 安装 Ubuntu-20.04> wsl --install -d Ubuntu-20.04二、创建 .NE
2022-02-27 12:30:19 761
原创 初识 ABP 框架
目录前言:一、创建ABP应用的方式二、运行基于ABP的控制台应用三、运行基于ABP的Web应用参考文档前言:本文使用 .NET Core SDK 3.1 的版本。ABP Framework 在2013年就有了,至今为止出现过很多版本,在.NET Core出现后,ABP 也发生了巨大的改变,当前版本早期为了与之前的版本进行区分叫做 Abp vNext,现在Abp vNext已经成熟可以商用了,vNext 就不再存在,实际上他的名字就叫 ABP Framework。一、创建ABP应用的方式创建AB
2021-07-03 09:12:54 8715
原创 在 ASP.NET Core 中使用 OData 实现 Restful API 查询
文章目录前言:一、建构 OData 实体模型二、配置 OData 中间件三、OData 实现 Restful API 查询参考文档前言:本文使用 .NET Core SDK 3.1 的版本。OData 是 Open Data Protocol 的简写,OData 允许以简单和标准的方式创建和使用可查询和互操作的 Restful API。官方文档访问 OData - Basic Tutorial。创建 Web API 项目,并引入 OData 相关的 NuGet 包: dotnet pack M
2021-06-15 21:29:07 1184
原创 关于 ASP.NET Core 中的会话中间件
文章目录前言:一、配置会话中间件二、会话状态的读写前言:本文使用 .NET Core SDK 3.1 的版本。Http是一种采用请求响应消息交换模式,且无状态的传输协议,Http协议确保客户端将请求报文发送给目标服务器并成功接受来自服务端的响应报文,这个报文交换是一个Http事务,从协议的角度讲,即使在使用长连接的情况下,同一个客户端和服务器之间进行多个Http事务也是完全独立的,所以需要在应用层为两者去建立一个上下文来保存多次消息交换的状态,这就是所谓的会话。一、配置会话中间件二、会话状态
2021-03-26 06:51:23 235
原创 在 .NET Core 中添加 OpenAPI 服务引用
文章目录前言:一、将 Swagger 引入 WebAPI 项目二、添加 OpenAPI 服务引用前言:本文使用 .NET Core SDK 3.1 的版本。在我们使用微服务的时候,各个微服务之间会经常调用接口,但是手动写Http请求的代码非常繁琐,在 Visual Studio 2019 的 .NET Core 项目中提供了添加连接的服务的功能,使得我们的工作变得简单容易。一、将 Swagger 引入 WebAPI 项目将 Swagger 引入 ASP.NET Core 项目可以使用Swashb
2021-02-28 15:42:55 3914
原创 在 ASP.NET Core 中使用视图运行时编译
文章目录前言:一、新项目开启运行时编译二、旧项目开启运行时编译前言:本文使用 .NET Core SDK 3.1 的版本在 ASP.NET MVC 中,项目默认是视图运行时编译,在 ASP.NET Core MVC 中视图运行时编译需要手动开启。一、新项目开启运行时编译在创建新的 ASP.NET Core Web 应用程序时,如果选择 Razor 或者 MVC 模板,在右侧栏中会出现身份验证和高级的选项,在高级选项中勾选上 Enable Razor runtime compilation 项即可。
2021-02-25 06:23:52 980
原创 关于 ASP.NET Core 中的异常处理中间件
目录前言:一、开发人员异常中间件二、异常处理中间件1) 用ExceptionHandlerOptions对象提供用来处理请求的RequestDelegate2) 直接注册一个中间件处理异常3) 服务器重定向到异常页面三、状态码页面中间件1) 直接设置响应正文2) 指定状态码错误处理器3) 重定向的状态码页面中间件顾名思义这个中间件就是提供一个异常处理器来处理抛出的异常,所谓的异常处理器就是一个请求委托对象。异常处理中间件捕捉到抛出的异常后,会利用它来处理当前的请求。前言:本文使用 .NET Core
2021-02-24 21:02:46 639
原创 在 ASP.NET Core 中使用中间件处理异常
目录前言:一、开发人员异常页二、异常处理程序页三、异常处理程序 lambda四、异常过滤器 IExceptionFilter1) 直接实现 IExceptionFilter 的方式2) 继承 ExceptionFilterAttribute 的方式参考文档前言:本文使用 .NET Core SDK 3.1 的版本,介绍了处理 ASP.NET Core Web 应用中常见异常的一些方法。本文 Demo 中贯穿全文的代码如下:#region Enums public enum ResultSta
2021-02-24 05:51:05 606
原创 关于 ASP.NET Core 中的路由
文章目录前言一、添加路由服务二、注册路由和终结点中间件1.引入库2.读入数据总结前言当前文章用的 .NET Core SDK 3.1。ASP.NET Core 中的路由由通过两个中间件协作完成的。一、添加路由服务在 ConfigureServices 加入 AddRouting,即可假如路由服务,但是博主暂时不知道直接使用无参的 AddRouting 有什么意义,似乎在使用路由的时候默认就是这个。 webHostBuilder.ConfigureServices(collection =
2021-01-26 07:18:03 499 1
原创 在 Ubuntu18.04 安装 RabbitMQ
目录前言:一、安装1) 安装erlang2) 更新 apt-get 源3) 安装 RabbitMQ4) 添加 admin 用户5) 设置 admin 为 administrator 角色6) 赋权7) 启用图形管理界面二、 开放端口三、 管理RabbitMQ常用命令参考文档前言:RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性
2020-11-21 01:30:37 268 2
原创 C# 中 async/await 解析
目录前言:一、使用 async 和 await二、用代码实现 async/await前言:已经有很多文章讲解 async/await 了,此文仅给自己理解用。此文章以下代码将重复使用,贯穿全文 public static string GetThreadId() { return Thread.CurrentThread.ManagedThreadId.ToString("000"); } public static void TaskRun(
2020-08-09 17:03:54 441 3
原创 C# 中的多线程实现方式
目录前言:一、使用委托开启子线程二、使用Thread开启子线程前言:线程 被定义为程序的执行路径。每个线程都定义了一个独特的控制流。如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作。下面简单的 DoSomething 方法将贯穿全文。 private string DoSomething(string name, int millisecondsTimeout) { Thread.Sleep(millisecond
2020-08-04 21:02:33 6982 4
原创 C# 中的装饰器模式示例
装饰器模式属于结构型模式,它是作为现有的类的一个包装。允许向一个现有的对象添加新的功能,同时又不改变其结构。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 public abstract class AbstractMotion { public abstract void Start(); } public class BaseMotion : AbstractMotion {
2020-07-23 22:03:23 693
原创 C# 中的原型模式示例
原型模式,把对象从内存层面复制,然后返回。不经过类的构造函数,但是是一个全新的对象。 public class Prototype { public Prototype() { Console.WriteLine("构造。。。。"); } private static readonly Prototype prototype = new Prototype(); public sta
2020-07-21 20:52:22 214
原创 C# 中的单例模式示例
目录前言:一、线程不安全的单例二、使用锁实现单例三、使用静态构造函数实现单例四、使用静态字段实现单例五、使用Lazy实现单例前言:一、线程不安全的单例懒汉模式,线程不安全,不建议使用。 public class Singleton { private Singleton() { } private static Singleton singleton = null; public static Singleton CreateInst
2020-07-20 22:23:14 542
原创 C# 中的表达式树
目录前言:一、使用lambda声明表达式树二、表达式树的分解三、表达式树实现实体映射四、表达式树的访问或重写五、表达式树的Sql拼装前言:我们在工作当中,经常会接触到与表达式树相关的内容,比如 EF,EF Core中的 lambda,就是表达式树。表达式树是一种数据结构,一个能拼装能解析的数据结构。一、使用lambda声明表达式树以下代码演示声明表达式树和表达式树转换为委托。 // lambda表达式 声明表达式目录树,是一个数据结构 (快捷方式) Expression<Fu
2020-07-19 20:05:36 1230
原创 C# 优化的图片压缩
用了网上百度的图片压缩以后发现并不合适,压缩参数 new EncoderParameter(Encoder encoder, long value) 的参数 value 和图片的大小并不是线性相关。我也没有去深层研究内部构造,根据试参,重新写了算法。
2020-07-07 21:01:25 539
原创 C# 中的常用的反射方法
目录前言:一、项目结构二、创建对象并调用方法1. 获取类型2. 创建对象 (构造函数重载)3. 调用方法 (无参非重载)4. 调用方法 (一个参数非重载)4. 调用方法 (静态方法)5. 调用方法 (重载无参)6. 调用方法 (重载有参)7. 调用方法 (重载有参)8. 调用私有方法9. 获取类型 (泛型)10. 访问私有构造函数创建对象11. 调用泛型方法三、创建对象并修改属性和字段1. 遍历属性2. 便利字段前言:反射提高了程序的灵活性和扩展性。降低耦合性,提高自适应能力。它允许程序创建和控制
2020-06-16 22:00:48 746
原创 在 .NET Core 和 ASP.NET Core 中使用 Serilog
目录前言:前言:本文使用的 .NET Core SDK 3.1 版本。与.NET的其他日志记录库不同,在 Serilog 中和日志消息一起传递的参数不会破坏性地呈现为文本格式,而是作为机构化数据保留。在 Serilog 的 NuGet 包中,Serilog.AspNetCore 是所有常用包的集合。所以你不管是控制台程序还是Web程序直接引入 Serilog.AspNetCore 即可:...
2020-03-14 19:33:48 1460
原创 使用 IdentityServer4 隐式流(Implicit)保护 Vue(SPA)客户端
目录前言:前言:该文章 Vue 用 Vue CLI 3.0 创建的 Vue + TypeScript + Sass 的项目。
2020-03-10 22:33:12 2458 3
原创 ASP.NET Core 中的选项模式
一、依赖注入的生命周期在选项模式中实例的生命周期由注入时使用的接口决定,有IOptions 、 IOptionsMonitor 和 IOptionsSnapshot共三个,其中 IOptions 、 IOptionsMonitor 的生命周期是单例模式,生命周期和 AddSingleton 类似,IOptions 没有数据热更新,读取的值永远不会变。IOptionsMonitor 和 I...
2020-03-10 22:29:55 1320
原创 .NET Core 和 ASP.NET Core 中的日志框架
目录前言:一、在控制台应用程序中使用日志框架1) 日志的简单使用前言:本文使用的 .NET Core SDK 3.1 版本。本文将主要介绍ASP.NET Core自带的日志 Microsoft.Extensions.Logging 程序包的使用,主要演示如何在 ASP.NET Core Web 应用程序 和 控制台应用程序 中使用 Microsoft.Extensions.Logging...
2020-03-10 22:01:24 1768
原创 .NET Core 中使用强类型对象承载配置数据
目录前言:前言:本章节引入了 Microsoft.Extensions.Configuration.Json ,Microsoft.Extensions.Configuration.Binder 两个程序包。
2020-02-25 22:32:30 244
原创 .NET Core 的配置框架
目录前言:一、内存配置提供程序二、命令行配置提供程序前言:ASP.NET Core 中的应用配置基于配置提供程序 建立的 键值对 。配置提供程序将配置数据从各种配置源读取到键值对。配置框架的核心实现包是Microsoft Extensions.Configuration,依赖于Microsoft Extensions.Configuration.Abstractions抽象包。使用了 ...
2020-02-21 00:20:30 386
原创 使用 BackgroundWorker 执行任务并监控线程进度
目录前言:示例前言:该示例适用于任务执行时返回进度。示例示例 UI 基本为如下图示例代码如下 private BackgroundWorker _bw; /// <summary> /// 开始按钮 /// </summary> /// <param name="sender"></param...
2019-12-22 08:35:40 267
原创 使用 CancellationTokenSource 中止 Task
目录前言:示例前言:该示例适用于中止 Task示例示例 UI 基本为如下图示例代码如下 private CancellationTokenSource _cts; /// <summary> /// 开始按钮 /// </summary> /// <param name="sender"><...
2019-12-21 22:46:13 324
原创 托管和部署 ASP.NET Core (其一)
目录前言一、独立部署1)Windows 部署2)Linux 部署二、 @Emit 装饰器1)父组件2)子组件三、 @Model 装饰器1)父组件2)子组件四、 @Prop 装饰器1)父组件2)子组件五、 @Provide 装饰器 和 @Inject 装饰器1)父组件 @Provide2)子组件 @Inject六、 @Watch 装饰器参考文档前言一、独立部署1)Windows 部...
2019-12-20 08:36:31 385
原创 在 CentOS 7 安装 .Net Core SDK
目录前言:一、注册Microsoft密钥和源二、安装.NET安装.NET Core SDK安装ASP.NET Core运行时安装.NET Core运行时三、如何安装其他版本参考文档前言:在安装.NET之前,需要:注册Microsoft密钥注册产品资料库安装所需的依赖项一、注册Microsoft密钥和源在安装.NET之前,您需要:注册Microsoft密钥注册产品资料库安...
2019-12-16 21:31:56 589
原创 .NET Fx 使用 log4net 接入 ELK
目录一、引入NuGet包二、配置 log4net三、记录日志一、引入NuGet包接入ELK首先需要引入 log4net 和 log4net.ElasticSearch 两个包。直接使用程序包管理器控制台Install-Package log4netInstall-Package log4net.ElasticSearch二、配置 log4netlog4net.config 配置文...
2019-11-15 18:48:27 496
原创 C# 同步方法转换为异步方法
一个普通方法需要用异步方法返回可以用 Task.FromResult() 和 Task.Run() 。一个异步方法需要在普通方法中调用时,可以用 (Task).GetAwaiter().GetResult() 来获取同步值。 static async void Main(string[] args) { int a = await ResultZeroAsync(...
2019-08-16 18:16:32 4026
原创 .NET 高性能泛型缓存
目录前言:一、创建项目二、IdentityServer 项目1) 将 json config 修改为 code config2) 修改 Config.cs 文件三、Api 项目1) 配置 Startup.cs2) IdentityController.cs 文件3) TodoController.cs 文件四、Vue 项目参考文档前言:该文章 Vue 用 Vue CLI 3.0 创建的 Vu...
2019-08-09 23:40:27 1132
原创 JavaScript 常用的高阶函数
目录前言:一、map()二、reduce()三、filter()四、sort()前言:fffff一、map()按照同一规则 改变数组内的每个值 function pow(x) { return x * x; } var arr = [1, 2, 3, 4]; var results = arr.map(pow); // [1, 4, 9, 16] results ...
2019-06-15 17:07:31 285
原创 VMware Workstation创建了CentOS 7虚拟机后配置网络
目录一、网络配置查看二、编辑Linux中的网络配置文件三、查看网络配置四、重启网络服务五、重启网络服务六、查看DNS文件配置七、测试一、网络配置查看你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。二、编辑Linux中的网络配置文件我们对Markdown编辑器进行了一...
2019-06-14 21:15:14 617
原创 使用 IdentityServer4 授权码(Authorization Code)保护 ASP.NET Core 客户端并访问被保护资源
目录前言:一、创建项目参考文档前言:资源所有者密码凭证(例如用户名和密码)直接被用来请求 Access Token通常用于遗留的应用资源所有者和客户端应用之前必须高度信任其他授权方式不可用的时候才使用,尽量不用一、创建项目参考文档Requesting Claims using Scope Values - OIDCResource Owner Password Cred...
2019-05-10 16:46:42 2677 3
原创 使用 IdentityServer4 资源所有者密码凭证(ResourceOwnerPassword)访问受保护资源
目录前言:一、创建项目二、Api 项目1) 配置 Startup.cs2) IdentityController.cs 文件三、IdentityServer 项目1) 将 json config 修改为 code config2) 修改 Config.cs 文件四、WpfClient 项目1) 修改 MainWindow.xaml 文件2) 修改 MainWindow.xaml.cs 文件参考文档...
2019-05-09 20:30:24 1280
原创 使用 IdentityServer4 客户端凭证(ClientCredentials)访问受保护资源
目录前言:一、创建项目二、IdentityServer 项目1) 将 json config 修改为 code config2) Config.cs 修改三、Api 项目1) 配置 Startup.cs2) IdentityController.cs 文件四、ConsoleClient 项目1) 修改ConsoleClient.csproj 文件2) 修改Program.cs 文件参考文档前言:...
2019-05-09 18:11:09 1152
原创 使用 Vuex + TypeScript 时项目中常用的装饰器
目录前言:一、装饰器的简单运用1) 创建并在项目中引入 Vuex2) 在 Vue组件 中使用 Vuex一、使用 Module 将 store 分割成模块1) 引入前言:当前用到了创建项目应该会自带的 vue-property-decorator npm包代码中 el-* 的标签是 ElementUI 的组件。一、装饰器的简单运用1) 创建并在项目中引入 Vuex首先在 src ...
2019-05-04 09:48:20 3288 1
原创 使用 Vue + TypeScript 时常用的装饰器
目录一、@Component 装饰器1)父组件2)子组件二、 @Emit 装饰器1)父组件2)子组件三、 @Model 装饰器1)父组件2)子组件四、 @Prop 装饰器1)父组件2)子组件五、 @Provide 装饰器 和 @Inject 装饰器1)父组件 @Provide2)子组件 @Inject六、 @Watch 装饰器备注: 代码中 el-* 的标签是 ElementUI 的组件。一、...
2019-04-30 09:04:49 5698
原创 使用 Vue + axios 时,返回状态200,返回值被浏览器拦截
目录前言解决方案前言在使用 Vue + TypeScript + axios 时,后端已经配置了Cors的前提下,但是在请求接口的时候,返回状态为 200,但是返回值却被浏览器给拦截了。解决方案在 main.ts(main.js) 中增加一条 axios 的配置,withCredentials 默认为 false,所以为一条。import Vue from 'vue';import A...
2019-04-27 15:58:40 3878
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人