ASP.NET Core

在Asp.NET Core中如何优雅的管理用户机密数据

两盒软妹~` 提交于 2020-07-24 13:07:49
在Asp.NET Core中如何优雅的管理用户机密数据 背景 回顾 在软件开发过程中,使用配置文件来管理某些对应用程序运行中需要使用的参数是常见的作法。在早期VB/VB.NET时代,经常使用.ini文件来进行配置管理;而在.NET FX开发中,我们则倾向于使用web.config文件,通过配置appsetting的配置节来处理;而在.NET Core开发中,我们有了新的基于json格式的appsetting.json文件。 无论采用哪种方式,其实配置管理从来都是一件看起来简单,但影响非常深远的基础性工作。尤其是配置的安全性,贯穿应用程序的始终,如果没能做好安全性问题,极有可能会给系统带来不可控的风向。 源代码比配置文件安全么? 有人以为把配置存放在源代码中,可能比存放在明文的配置文件中似乎更安全,其实是“皇帝的新装”。 在前不久,笔者的一位朋友就跟我说了一段故事:他说一位同事在离职后,直接将曾经写过的一段代码上传到github的公共仓库,而这段代码中包含了某些涉及到原企业的机密数据,还好被github的安全机制提前发现而及时终止了该行为,否则后果不堪设想。 于是,笔者顺手查了一下由于有意或无意泄露企业机密,造成企业损失的案例,发现还真不少。例如 大疆前员工通过 Github 泄露公司源代码,被罚 20 万、获刑半年 这起案件,也是一个典型的案例。 该员工离职后

ASP.NET Core 应用程序Startup类介绍

こ雲淡風輕ζ 提交于 2020-07-24 06:17:49
Startup 类配置服务和应用程序的请求管道。 Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为 Startup 。在主程序的Web Host生成器(WebHostBuilderExtensions)的 UseStartup <TStartup> 扩展方法中指定启动类名称。 您可以为不同的环境定义不同的 Startup 类,并在运行时选择适当的 Startup 类。如果在Web Host配置或选项中指定 startupAssembly (启动程序集),托管将加载该启动程序集并搜索 Startup 或 Startup[Environment] 类型。根据名称后缀匹配当前环境的类将被优先使用,所以如果应用程序在开发环境中运行,并包含一个 Startup 和一个 StartupDevelopment 类,他将使用 StartupDevelopment 类。 通俗的讲,ASP.NET Core应用程序启动的时候将会根据当前的运行环境(生产环境(Production)或者开发环境(Development))自动选择启动类。比如在一个ASP.NET Core应用程序中,具有两个启动类 Startup 和 StartupDevelopment ,那么当我们的启动环境设置为开发环境的时候,启动时将会搜索启动程序集,优先使用 StartupDevelopment

[外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.quartz 简单配置使用)

跟風遠走 提交于 2020-07-23 23:37:13
上一章介绍了log4net的简单配置,这一章介绍一下quartz的简单使用,下一章介绍一下我得权限使用,然后就结束 本章主要介绍: quartz在asp.net core中的使用 这个项目虽小,但是及其容易扩展,后面的业务直接能丢进来,使其更加丰富 废话不说开始介绍 一.基础类配置   在domain里定义IJobCenter接口      代码如下:    public interface IJobCenter { /// <summary> /// 添加定时任务 /// </summary> /// <param name="m"></param> /// <returns></returns> Task<Result> AddScheduleJobAsync(TaskScheduleModel m); /// <summary> /// 暂停定时任务 /// </summary> /// <param name="jobGroup"></param> /// <param name="jobName"></param> /// <returns></returns> Task<Result> StopScheduleJobAsync( string jobGroup, string jobName); /// <summary> /// 恢复定时任务 /// <

【asp.net core】7 实战之 数据访问层定义

泪湿孤枕 提交于 2020-07-23 21:36:28
0. 前言 在上一篇,我们搭建了一个项目框架,基本上是一个完整的项目。目前而言,大部分的应用基本都是这个结构。好的,不废话了,进入今天的议题:完成并实现数据层的基础实现。 1. 数据实体 通常情况下,一个项目的数据实体中字段并不是完全没有规律可寻。通常情况下,必须有一个主键。有些时候,会要求在数据表中增加上次修改时间和创建时间,以及创建人和修改人的主键。 所以,我们可以创建一个泛型父类,来帮我们定义这些公共字段: using System; namespace Data.Infrastructure { public class BaseEntity<T> { public T Id { get; set; } public string ModifyUserId { get; set; } public DateTime? ModifyTime { get; set; } public string CreatorId { get; set; } public DateTime? CreateTime { get; set; } } } 看上述代码里,命名空间并不在Data里,而是在Data.Infrastructure里。这个命名空间 Infrastructure 用来存放一些项目的架构类或者接口,里面还会其他的类。 那么,给这个类补充一些可能有用的方法: public

TechEmpower Web 框架性能第19轮测试结果正式发布,ASP.NET Core在主流框架中拔得头筹

时间秒杀一切 提交于 2020-07-23 21:00:15
TechEmpower 第19轮编程语言框架性能排行榜2020年5月28日正式发布,详见官方博客: https://www.techempower.com/blog/2020/05/28/framework-benchmarks-round-19/ ,TechEmpower基准测试有许多场景(也称为测试类型),此次评测多了一个综合评分选项,把拥有完整测试覆盖的框架现在将具有综合 分数 ,这反映了测试项目类型的总体性能得分:JSON serialization, Single-query, Multi-query, Updates, Fortunes 和 Plaintext. 。对于每一轮,我们使每个测试类型的结果规范化,然后为每个测试类型应用主观权重(例如,Fortunes的权重比 Plaintext 高,因为Fortunes 是一种更现实的测试类型)。asp.net core排第6名,asp.net 排名倒数第二,第103名, 微软从倒数一路追赶到第一。 表上前缀T标签表示精选的主流编程语言 第1名 C++的drogon 9676分 第2名 Rust的actix 9064分 第6名 C#的ASP.NET Core 5659分 第29名 Go的Chi 2229分 第34名 Java的Spring 1867分 第73名 Nodejs的Express 821分 第94名

造轮子-AgileConfig基于.NetCore的一个轻量级配置中心

隐身守侯 提交于 2020-07-23 20:00:26
微服务确实是行业的一个趋势,我自己也在把一些项目往微服务架构迁移。玩微服务架构配置中心是一个绕不过去的东西,有很多大牌的可以选,比如spring-cloud-config,apoll,disconf等等。而我为什么还要造一个轮子呢?一来这些都不是.net实现的,我就想试试用.net core实现一个,而且他们也对.net不太友好,也只有apoll提供了官方的.net客户端。二来这些组件都太重量级了,比如apoll,光跑起来就要部署多个节点(admin,portal,meta sevice)还要依赖eureka。很多旧的项目往微服务迁移的时候并不是一下次全部调整完成的,可能是一步步来的,比如先把所有的服务都容器化,并没有使用微服务全家桶。而且有的项目也不需要微服务全家桶,毕竟微服务不是银弹,很多项目单体结构就足够了,有些项目传统的SOA架构也可以了。(唠叨一句,那种毫无流量毫无并发的项目,几人几天就搞完的强上微服务真的好吗?)但是这些项目也可能是分布式的,容器化部署的,那么这些项目我觉得也是需要配置中心的,因为在分布式、容器化环境下更改配置实在是太麻烦了。可以说配置中心并不是微服务独有的。基于以上原因我提炼了一些配置中心必备的功能,做的尽量简单(陋),开发了AgileConfig,为.net core的生态尽一份绵薄之力。 Github求star: AgileConfig

.NET进行客户端Web开发又一利器

百般思念 提交于 2020-07-23 19:05:43
你好,我是Dotnet9,继上篇介绍 Bootstrap风格的BlazorUI组件库 后,今天我来介绍另一款Blazor UI组件库:一套基于 Ant Design 和 Blazor 的企业级组件库。 本文导航: 一、关于Ant Design Blazor 二、Ant Design Blazor的社区贡献 2.1 项目关注度 2.2 Ant Design官方认可 2.3 微软官方认可 三、Ant Design Blazor UI库介绍 四、Ant Design Blazor后续计划 五、Ant Design Blazor技术交流 一、关于Ant Design Blazor 项目名称: Ant Design Blazor 项目作者: James Yeung(社区发起者,目前项目参与度高,有较多贡献者) 开源许可协议: MIT 项目地址: https://github.com/ant-design-blazor/ant-design-blazor ✨ 特性 🌈 提炼自企业级中后台产品的交互语言和视觉风格。 📦 开箱即用的高质量 Blazor 组件,可在多种托管方式共享。 💕 支持基于 WebAssembly 的客户端和基于 SignalR 的服务端 UI 事件交互。 🎨 支持渐进式 Web 应用(PWA) 🛡 使用 C# 构建,多范式静态语言带来高效的开发体验。 ⚙️ 基于 .NET

ASP.NET Core MVC如何上传文件及处理大文件上传

我的梦境 提交于 2020-07-23 17:02:08
用文件模型绑定接口:IFormFile (小文件上传) 当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发ASP.NET Core MVC的Controller中的Action方法。这种情况下,如果上传一些小文件是没问题的,但是如果上传大文件,势必会造成服务器内存大量被占用甚至溢出,所以IFormFile接口只适合小文件上传。 一个文件上传页面的Html代码一般如下所示: < form method ="post" enctype ="multipart/form-data" action ="/Upload" > < div > < p > Upload one or more files using this form: </ p > < input type ="file" name ="files" /> </ div > < div > < input type ="submit" value ="Upload" /> </ div > </ form > 为了支持文件上传,form标签上一定要记得声明属性enctype="multipart/form-data",否则你会发现ASP.NET Core MVC的Controller中死活都读不到任何文件。Input type=

【.NET Core项目实战-统一认证平台】基于jackcao博客使用VSCode开发及感悟One搭建开发环境

我只是一个虾纸丫 提交于 2020-05-08 20:39:15
原博客系列文章链接:https://www.cnblogs.com/jackcao/ 金焰的世界 感谢博主无私的奉献,感谢博主幼儿班的教学 基于jackcao博客使用VsCode开发及感悟One搭建开发环境 进入正文,原博主的文章适用于有一定基础的人,因此对于新手来说不算友好。因此此系列文章围绕如何搭建开发环境,如何跟着博主一步一步去学习理解这个平台。 很多初学者看着这一大堆东西,无从下手,遂从入门到放弃。我就从最简单的如何在windows上最小化开发开始,希望大家同我一起从入门到深入。 我的环境是win10,电脑配置渣,因此采用VSCode写代码,mysql数据库。宇宙最强IDE Visual Studio,我就不安装了,我这电脑还没公司好。 VS Code 开发.Net Core https://www.cnblogs.com/yilezhu/p/9926078.html Q:安装vscode-solution-explorer插件后看不到“SOLUTION EXPLORER”窗格? A:左侧tab右键勾选Solution,就会显示出来,新版本是单独一个tab,右键即可Create new empty solution Q:乱点一通,各种界面很乱,已经不知那个窗口是啥了? A:还原vscode 工作空间设置 ,一切皆配置。配置文件路径:C:\Users\{your accout

ASP.NET Core MVC 如何获取请求的参数

人盡茶涼 提交于 2020-05-07 13:24:57
ASP.NET Core MVC 如何获取请求的参数 一次HTTP请求,就是一次标准IO操作。请求是I,是输入;响应式O,是输出。任何web开发框架,其实都是在干这两件事: 接受请求并进行解析获取参数 根据参数进行渲染并输出响应内容 所以我们学习一个框架,我认为最首要的是知道如何从请求中获取参数。http请求携带参数的地方主要有下面几个地方: URL Header Body 下面看看ASP.NET Core是如何从这几个位置获取参数的。 通过URL获取参数 通过URL传参是HTTP最最常用的办法。这里简单介绍下URL相关的知识。一个URL主要分成4个部分,以 http://localhost:5000/fromurl/test?name=mjzhou&age=10 为例: http:// 协议 localhost:5000 主机地址 /fromurl/test PATH name=mjzhou&age=10 QueryString 我们通常使用PATH跟QueryString来传递参数。新建一个MVC项目,新建一个Controller名为FromUrlController,通过几个Action来演示如何从URL上获取参数。 通过QuerySting获取参数 Request.Query对象 // /fromurl/test?name=mjzhou public