ASP.NET Core

ASP.NET Core 中间件详解及项目实战

淺唱寂寞╮ 提交于 2020-08-18 21:16:56
原文: ASP.NET Core 中间件详解及项目实战 前言 在 上篇文章 主要介绍了DotNetCore项目状况,本篇文章是我们在开发自己的项目中实际使用的,比较贴合实际应用,算是对中间件的一个深入使用了,不是简单的Hello World,如果你觉得本篇文章对你有用的话,不妨点个【推荐】。 目录 中间件(Middleware)的作用 中间件的运行方式 中间件(Middleware)和过滤器(Filter)的区别 什么情况我们需要中间件 怎么样自定义自己的中间件 中间件(Middleware)的作用 我们知道,任何的一个web框架都是把http请求封装成一个管道,每一次的请求都是经过管道的一系列操作,最终到达我们写的代码中。那么中间件就是在应用程序管道中的一个组件,用来拦截请求过程进行一些其他处理和响应。中间件可以有很多个,每一个中间件都可以对管道中的请求进行拦截,它可以决定是否将请求转移给下一个中间件。 asp.net core 提供了 IApplicationBuilder 接口来让把中间件注册到asp.net的管道请求当中去,中间件是一个典型的AOP应用。 下面是一个微软官方的一个中间件管道请求图: 可以看到,每一个中间件都都可以在请求之前和之后进行操作。请求处理完成之后传递给下一个请求。 中间件的运行方式 默认情况下,中间件的执行顺序根据 Startup.cs 文件中,在

搭建一套ASP.NET Core+Nacos+Spring Cloud Gateway项目

不羁的心 提交于 2020-08-18 15:06:55
前言 伴随着随着微服务概念的不断盛行,与之对应的各种解决方案也层出不穷。这毕竟是一个信息大爆发的时代,各种编程语言大行其道,各有各的优势。但是有一点未曾改变,那就是他们服务的方式,工作的时候各司其职,但是需要提供服务的时候必须要高度统一,这也是微服务的概念之一。日常的工作学习中,我个人更喜欢通用的解决方案,特别是能将不同编程语言亦或者不同编程框架整合到一起的那种,这种解决方案拉近了编程语言之间的距离,让开发者能更清楚的意识到编程语言只是工具,解决问题才是王道。好了口遁到此结束,接下来我就搭建一套.Net体系结合Java体系的项目架构。 概念介绍 接下来我们用到的技术栈名词主要涉及到ASP.NET Core、Nacos、Spring Cloud Gateway,接下来我们分别介绍所使用的的三种框架。 Nacos Nacos是阿里巴巴开源的致力于服务发现、配置和管理微服务的框架。提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。一般用到的最多的就是当做配置中心和注册中心。 中文官网地址: https://nacos.io/zh-cn/ 官方 GayHub GitHub地址: https://github.com/alibaba/nacos 下载地址: https://github.com/alibaba/nacos/releases

asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

不羁岁月 提交于 2020-08-18 14:25:08
最近在学习张善友老师的 NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionless的学习做下笔记! Exceptionless是什么?能做什么呢? “Exceptionless”这个词的定义是:没有异常。Exceptionless可以为您的ASP.NET、Web API、WebFrm、WPF、控制台和MVC应用程序提供实时错误、特性和日志报告。它将收集的信息组织成简单的可操作的数据,这些数据将帮助你很方便的查看异常信息。还有最重要的是,它是开源的! Exceptionless的使用方式有哪些? 1.官网创建帐号,并新建应用程序以及项目,然后生成apikey(数据存储在Exceptionless) 2.自己搭建Exceptionless的环境,部署在本地(数据存储在本地) Exceptionless的运行环境有哪些要求?需要安装哪些软件,进行什么配置呢? .NET 4.6.1 (安装了.net core 或者vs2017的话环境应该都没问题,不需要额外安装) Java JDK 1.8+(如果使用windows系统的话需要配置环境变量,这个使用过java的人应该都知道吧!相信对于你来说应该不是难事).下载地址:http://www.oracle.com

【原创】在 ASP.NET Core 3.1 中使用 Senparc.Weixin.Work 企业微信 SDK —— 发送文本消息

你离开我真会死。 提交于 2020-08-18 12:25:15
下面在 Web 空应用里展示一个简单的例子来实现发送文本消息。 本文目录: 创建 Web 空应用 命令行方式创建 添加SDK引用 命令行方式 进入项目目录 添加包引用 配置和使用SDK 添加appsettings.Development.json文件 修改Startup.cs,配置服务 添加Controller,在Get方法中发送消息 创建 Web 空应用 命令行方式创建 $ dotnet new web --name ASPNETCoreWeixinWorkDemo dotnet 是程序的名字 new 是一个子程序的名字 web 是要使用的项目模板的名字 --name ASPNETCoreWeixinWorkDemo 指定要创建的项目的名字是 ASPNETCoreWeixinWorkDemo 添加SDK引用 命令行方式 进入项目目录 $ cd ASPNETCoreWeixinWorkDemo 添加包引用 $ dotnet add package Senparc.Weixin.Work 这个命令的执行效果可以在 WeixinWorkDemo.csproj 文件中看到。 <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <

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

泪湿孤枕 提交于 2020-08-18 07:38:21
前言:微软于前天发布.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 使用 Redis 和 Protobuf 进行 Session 缓存

我们两清 提交于 2020-08-18 04:30:01
原文: ASP.NET Core 使用 Redis 和 Protobuf 进行 Session 缓存 前言 上篇博文 介绍了怎么样在 asp.net core 中使用中间件,以及如何自定义中间件。项目中刚好也用到了Redis,所以本篇就介绍下怎么样在 asp.net core 中使用 Redis 进行资源缓存和Session缓存。 如果你觉得对你有帮助的话,不妨点个【推荐】。 目录 Redis 介绍 asp.net core Session 介绍 Redis & Session 实例讲解 Session的使用 使用 Protobuf 给 Session添加扩展方法 Redis 介绍 下面是 Redis官网 的介绍: Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis

Asp .Net Core 依赖注入

早过忘川 提交于 2020-08-18 01:54:45
借助依赖注入,可以管理类之间的依赖,帮助我们在构建应用时遵循设计原则,确保代码可维护性和可扩展性。ASP.NET Core的整个架构中,依赖注入框架提供了对象创建和生命周期管理的核心能力,各个组件互相协作,也是依赖注入框架能力来实现的。 两个核心包: Microsft.Extensions.Dependency;injection.Abstractions (抽象包) Microsoft.Extensions.Dependencylinjectiob (具体实现) *使用的是比较经典的接口分离模式,抽象包实现了接口的定义,实现包含具体的实现,组件只需要依赖他的抽象接口,而不需要依赖实现,在使用它的时候注入他的实现即可(这样做的好处在于我们可以在使用时决定我们具体的那个实现,未来可以做任意的扩展来替换依赖注入的实现) 依赖注入的核心类型: IServiceCollection (负责服务的注册) ServiceDescriptor (服务注册时的信息) IServiceProvider (具体的容器,由IServiceCollection) IServiceScope (表示一个容器的子容器的生命周期) .Net Core里提供了那些生命周期呢? 单例 Singleton (指整个根容器的生命周期内都是单例,不管时子容器还是根容器,它和作用域的区别,一个是全局的,一个是范围的单例)

ASP.NET Core搭建多层网站架构【8.3-编写角色业务的增删改】

放肆的年华 提交于 2020-08-17 20:11:34
2020/01/29, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构【8.3-编写角色业务的增删改】 编写最简单的增删改业务,涉及到DI依赖注入的使用、AutoMapper的使用、工作单元与仓储的使用、雪花Id的生成 文章目录 此分支项目代码 本章节介绍了编写最简单的增删改查业务,涉及到DI依赖注入的使用、AutoMapper的使用、工作单元与仓储的使用 类库添加引用 向 MS.Services 类库添加对 MS.Models 项目的引用 BaseService 在 MS.Services 类库中添加 BaseService.cs 类: using AutoMapper; using MS.Common.IDCode; using MS.DbContexts; using MS.UnitOfWork; namespace MS.Services { public interface IBaseService { } public class BaseService : IBaseService { public readonly IUnitOfWork<MSDbContext> _unitOfWork; public readonly IMapper _mapper; public readonly

遇到异常:Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true ins...

对着背影说爱祢 提交于 2020-08-17 18:22:14
原文: 遇到异常:Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead 嗯,在使用 asp.net core 中遇到这么一个异常: Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead 解决方法,加入配置: public void ConfigureServices(IServiceCollection services) { // If using Kestrel: services.Configure<KestrelServerOptions>(options => { options.AllowSynchronousIO = true ; }); // If using IIS: services.Configure<IISServerOptions>(options => { options.AllowSynchronousIO = true ; }); } 转自: https://stackoverflow.com/questions/47735133/asp-net-core

Asp.Net Core 发布到 Docker(Linux Centos 虚拟机,使用Dockerfile)

穿精又带淫゛_ 提交于 2020-08-17 16:19:39
实践一下 Asp.Net Core (基于.net core 2.2)部署到Docker 一、准备工作: 1. 使用Virtualbox创建一个Centos系统的虚拟机,并安装docker和vim 2. 配置好端口(如下图,后面需要使用) 3. 准备一个网站发布包(我采用的默认的Asp.Net Core MVC),windows发布时的配置(也可以在linux上进行发布),将发布包放入linux虚拟机(我的路径是:/root/Root/DefaultHttp/publish) 4. 测试一下发布包是否正常(可选,需要在linux安装.net core sdk,如果版本较低,需要使用sudo yum update命令更新) dotnet publish/DefaultHttp.dll 如图显示,是正常的 5. 创建Dockfile文件(路径:/root/Root/DefaultHttp/,即和publish文件夹同级),并把下面的代码放入文件中。 FROM mcr.microsoft.com/dotnet/core/aspnet: 2.2 WORKDIR / app EXPOSE 5000 # 一般情况下必须开放 EXPOSE 80 # 如果使用https,记得打开443端口,但是一般不用 #EXPOSE 443 COPY publish / / app ENTRYPOINT [ "