ASP.NET Core

ASP.NET Core知多少(6):VS Code联调Angular + .NetCore

徘徊边缘 提交于 2020-05-06 03:37:38
ASP.NET Core知多少系列:总体介绍及目录 1. 引言 最近在看《程序员的成长课》,讲到程序员如何构建技能树,印象深刻。作为一名后台开发的程序员,深感技能单一,就别说技能树了。作为一名合格的后台程序员,至少要掌握一门静态语言,一门动态语言和一门前端语言。静态语言C#算不上精通,动态语言Python也刚刚入门。但前端却是空白,虽说有了解过jquery、bootstrap,但因为项目无所涉及,早已忘得一干二净。 近几年,前端框架大行其道,Web开发已经是一个不容忽视的大趋势,在这个趋势下对前端框架一无所知,显然是要淘汰的。所以决定拾起前端,选择学习Angular来弥补自己的前端空白。计划使用.Net Core + Angular开发一个任务清单。 2. 环境准备 .Net Core已经支持Angular模板,我们只需要使用 dotnet new angular -n YourAppName 即可创建angualr项目模板。 依次安装: Node.js (默认安装,即可安装NPM) 执行 npm install -g @angular/cli ,安装angular cli。 开发工具: Visual Studio Code 安装最新 .Net Core SDK ,目前版本V2.1.101。 3. 创建并启动项目 执行 dotnet new angular -n Learning

.Net Core3.0依赖注入DI

蹲街弑〆低调 提交于 2020-05-06 02:16:15
构建ASP.NET Core应用程序的时候,依赖注入已成为了.NET Core的核心,这篇文章,我们理一理依赖注入的使用方法。 不使用依赖注入 首先,我们创建一个ASP.NET Core Mvc项目,定义个表达的爱服务接口,中国小伙类实现这个类如下: public interface ISayLoveService { string SayLove(); } public class CNBoyService : ISayLoveService { public string SayLove() { return " 安红,我喜欢你 " ; } } 在LoveController 控制器中调用 ISayLoveService的SayLove方法。 public class LoveController : Controller { private ISayLoveService loveService; public IActionResult Index() { loveService = new CNBoyService(); // 中国小伙对安红的表达 ViewData[ " SayLove " ] = loveService.SayLove(); return View(); } } 输出如图: 小结

ASP.NET Core Logging in Elasticsearch with Kibana

ぃ、小莉子 提交于 2020-05-05 16:20:49
原文: ASP.NET Core Logging in Elasticsearch with Kibana 在微服务化盛行的今天,日志的收集、分析越来越重要。ASP.NET Core 提供了一个统一的,轻量级的Logining系统,并可以很方便的与第三方日志框架集成。我们也可以根据不同的场景进行扩展,因为ASP.NET Core Logining系统设计的非常灵活性,我们可以很容易的添加自己的LogProvider。本文就来介绍一下如何借助于 ELKstack 来实现在分布式环境下的集中式日志处理。 使用Docker部署Elasticsearch和Kibana ELKstack是Elasticsearch、Logstash、Kibana三个开源软件的组合,是当今最为流行的统一日志分析平台。对于它们的介绍,网上非常之多,这里就不再多说。 在本文中只使用了 Elasticsearch 和 Kibana ,前者是分布式搜索系统,后者是一个可视化平台,使用docker来部署非常简单: 部署Elasticsearch 如下,绑定端口 9200 ,并将容器命名为 elasticsearch : docker run --name=elasticsearch -d -p 9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1"

Elasticsearch,Kibana,Logstash,NLog实现ASP.NET Core 分布式日志系统

喜夏-厌秋 提交于 2020-05-05 15:57:51
Elasticsearch,Kibana,Logstash,NLog实现ASP.NET Core 分布式日志系统 Elasticsearch 官方网站 Elasticsearch 文档 NLog.Targets.ElasticSearch package Elasticsearch - 简介 Elasticsearch 作为核心的部分,是一个具有强大索引功能的文档存储库,并且可以通过 REST API 来搜索数据。 它使用 Java 编写,基于 Apache Lucene ,尽管这些细节隐藏在 API 中。 通过被索引的字段,可以用许多不同的聚合方式找到任何被存储(索引)的文档。 但是,ElasticSearch不仅仅只提供对这些被索引文档的强大搜索功能。 快速、分布式、水平扩展,支持实时文档存储和分析,支持数百台服务器和 PB 级索引数据。 同时作为 Elastic stack (aka ELK) 的核心,提供了诸如 LogStash、Kibana 和更多的强大应用。 Kibana 是 Elasticsearch 中专门提供强有力的可视化查询Web应用程序。 使用Kibana,能非常简单地为 Elasticsearch 中索引的数据创建查询、图表和仪表盘。 Elasticsearch开放了一个 REST API,你会发现许多文档示例是 HTTP 调用,你可以尝试使用 curl 或

在Asp.Net Core MVC 3.0 视图运行时编译

一个人想着一个人 提交于 2020-05-05 15:47:21
在正常情况下,视图在生成的时候就会变为 xxx.Views.dll,在开发的时候,这样很不方便,因为很多的时候,我们只是修改一个样式,调整一些JavaScript代码,这个时候要把项目调试暂停下来,生成之后在看页面效果。 先通过nuget 包控制台安装: Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation -Version 3.0.0 然后在Startup.cs文件,在ConfigureServices函数中加入: .AddRazorRuntimeCompilation() // 如下 services.AddMvc() .AddRazorRuntimeCompilation() .AddNewtonsoftJson() .SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_3_0); 最后在项目文件中添加(VS2019双击项目): 注:不进行如下操作也可运行时编译,只是发布时 Views 目录会被编译为 ***.Views.dll 文件 < RazorCompileOnBuild > false </ RazorCompileOnBuild > < RazorCompileOnPublish >

ASP.NET Core 中的 Razor 文件编译

人走茶凉 提交于 2020-05-05 15:33:17
asp .net core mvc 3.0 在编译的时候做了一些改变,有些view视图更改需要重新编译,你也可以配置运行时编译,不用每次更改都去重新生成,具体代码如下,从官方文档看到,做个记录。 Razor 编译 Razor SDK 默认启用 Razor 文件的生成时和发布时编译。 启用后,运行时编译将补充生成时编译,允许更新 Razor 文件(如果对其进行编辑)。 运行时编译 使用 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 包启用运行时编译。 要启用运行时编译,应用必须: 安装 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet 包。     a. package manager: Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation -Version 3.0.0-preview7.19365.7     b. cli:dotnet add package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation --version 3.0.0-preview7.19365.7 程序包地址: https://www.nuget.org

(转)CentOS 7 安装 Docker

假如想象 提交于 2020-05-05 11:37:45
原文:http://www.cnblogs.com/stulzq/p/7743073.html http://www.cnblogs.com/stulzq/p/8629165.html------------------------- ASP.NET Core & Docker 零基础持续集成 前言 首先确保你的CentOS版本为7.x 。 centos-extras 存储库必须启用。 默认情况下启用此存储库,但如果已禁用该存储库,则需要重新启用该存储库。Docker分为企业版和社区版,企业版是收费的,本文讨论的是安装社区版。 卸载旧版本 Docker的旧版本被称为 docker 或 docker-engine 。 如果安装了这些,请卸载它们以及关联的依赖关系。 sudo yum remove docker \ docker-client \ docker-client-latest \ docker- common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine 安装Docker CE(CE代表社区版) 您可以根据需要以不同的方式安装Docker CE:

ASP.NET Core 防止跨站请求伪造(XSRF/CSRF)攻击

别等时光非礼了梦想. 提交于 2020-05-04 10:56:16
CSRF (Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本( XSS ),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与 XSS 攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比 XSS 更具危险性。 这幅图已经能够很好地解释了跨站攻击是怎么回事,这样的网站很容易被别人钓鱼, 示例: 创建2个网站 officialsite站点里有个 pay页面 view: <h1>支付</h1> <form action="/pay/post" method="post"> <input name="user" placeholder="姓名" /> <input name="price" placeholder="金额" /> <button type="submit">提交</button> </form> paycontroller: [HttpPost] public IActionResult Post(string user, decimal price) { return Json(new { ok =

ASP.NET Core 中的Ajax全局Antiforgery Token配置

馋奶兔 提交于 2020-05-04 10:56:03
前言 本文基于官方文档 《在 ASP.NET Core 防止跨站点请求伪造 (XSRF/CSRF) 攻击》 扩展另一种全局配置Antiforgery方法,适用于使用ASP.NET Core Razor + JQuery Ajax的项目,喜欢玩前后端分离的同学可以酌情参考,但希望不要对XSRF/CSRF掉以轻心,更不要不做处理。 Antiforgery Token 介绍 跨站点请求伪造(XSRF/CSRF)攻击跟浏览器中登录验证之后保存的Cookie有关,恶意站点通过向攻击目标站点发起非法请求时,浏览器按规则是会带上Cookie信息的,此时被攻击站点就会认为是用户操作行为,如果被利用在修改密码等操作上,对用户的信息安全就会带来威胁。为抵御 CSRF 攻击最常用的方法是使用同步器标记模式(STP)。 而Antiforgery Token(防伪令牌)是ASP.NET Core中的STP实现方案。 STP的防御过程: 服务器发送到客户端的当前用户的标识相关联的令牌。 客户端返回将令牌发送到服务器进行验证。 如果服务器收到与经过身份验证的用户的标识不匹配的令牌,将拒绝请求。 熟悉ASP.NET和ASP.NET Core的同学应该都不陌生,因为在ASP.NET时期就有防止XSRF攻击的方法,ASP.NET MVC中,IHtmlHelper.BeginForm默认情况下生成防伪令牌,而ASP

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

戏子无情 提交于 2020-05-04 10:51:43
前言 今天 .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