ASP.NET Core

GraphQL:简单开开始一个查询

╄→尐↘猪︶ㄣ 提交于 2020-12-04 13:44:48
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。 ——出自 https://graphql.cn 如果换个简单粗暴的说法就是: 减少API中查询 的代码。这对写api的程序员是个福音,那这时你肯定想,减少后,那功能会减少吗?其实正好相反,会 增加查询 场景。 关于GraphQL的基础知识,可以通过https://grapql.cn来学习,这里不再赘述,当了解GraphQL基础知识后,这里要说明的是由Michael Staib主导的asp.net core上的GraphQL的实现。 首先安装两个Nuget包 HotChocolate.AspNetCore HotChocolate.Data 在startup中注入graphql相关的实体类型 using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting;

如何在 Asp.Net Core MVC 中处理 null 值

心不动则不痛 提交于 2020-12-03 14:32:42
译文链接:https://www.infoworld.com/article/3434624/how-to-handle-null-values-in-aspnet-core-mvc.html 传统的 asp.net mvc 对应着 .netcore 中的 asp.net core mvc,可以利用 asp.net core mvc 去构建跨平台,可扩展,高性能的web应用和 api 接口。 程序员都有一些洁癖,很多时候我们都想很完美的包装一些错误信息,如一些返回空response的request请求,或者一些 action 中返回 null value 的情况,通常这些情况下,asp.net core mvc 都会返回 http status 204 (No Content),在本篇中,我准备修改一下这种从 action 返回 null value 的默认行为。 要想运行本篇的例子,你需要安装一下 Visual Studio 2019,如果没有安装,可以到官网安装一下:https://visualstudio.microsoft.com/downloads/ 在 Asp.NET Core 中新建 Controller 在解决方案窗口中的 Controller 文件夹上右键并选择 Add -> Controller 去新建Controller,指定这个 Controller

【asp.net core 系列】15 自定义Identity

ε祈祈猫儿з 提交于 2020-11-30 06:52:56
0. 前言 在之前的文章中简单介绍了一下asp.net core中的Identity,这篇文章将继续针对Identity进行进一步的展开。 1. 给Identity添加额外的信息 在《【asp.net core 系列】13 Identity 身份验证入门》一文中,我们大概了解了如何使用Identity,以及如何保存一些信息以便后续的验证。这里我们将深入讨论一下如何给Identity添加更多的信息。 我们知道在给Identity添加数据的时候,需要添加一个Claim对象。我们先回顾一下Claim的信息,Claim的属性大多只提供了公开的get访问器,所以这个类的重点在于构造方法: public class Claim { // 基础的 public Claim(string type, string value); public Claim(string type, string value, string valueType); public Claim(string type, string value, string valueType, string issuer); public Claim(string type, string value, string valueType, string issuer, string originalIssuer); //

ASP.NET开发实战——(一)开篇-用VS创建一个ASP.NET Web程序

泪湿孤枕 提交于 2020-11-30 03:38:23
  本文是本系列文章第一篇,主要通过建立一个默认ASP.NET MVC项目来引出与ASP.NET MVC相关的功能,由于ASP.NET MVC一个简单的模板就具备了数据库操作、身份验证、输入数据校验等功能,所以本系列文章将这些功能看作“魔法”来一一介绍。   本文从以下几个方面来进行讲诉:   ● 为什么写这一系列文章   ● 用VS2017创建一个ASP.NET MVC应用   ● 项目的运行与效果展示 为什么写这一系列文章?   本系列文章基于ASP.NET MVC,在ASP.NET Core已经发布2.0版本,微服务漫天的今天为什么还写ASP.NET?。   答:虽然现在已经有ASP.NET Core并且以微服务架构为主流,但是在生产上仍然存有很多用ASP.NET开发应用程序,所以对于维护来说ASP.NET也是很重要的,另外ASP.NET Core毕竟很多东西仍然是基于ASP.NET的思想的,理解ASP.NET再去学习Core会事半功倍,另外使用一项技术开发应用程序,并不是所有的业务都适合微服务架构,况且微服务不仅仅只是开发服务,它对开发和运维都有很大的要求,所以MVC这种单体程序仍旧有存在的意义(ASP.NET Core中也有MVC)。   网络中已经有很多很好的ASP.NET MVC的教程,为什么还要写?   答:首先网络上的东西个人觉得比较零碎

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 04. 中间件

做~自己de王妃 提交于 2020-11-30 00:01:45
注册startup类可以配置我们web应用的启动逻辑,使用的就是UseStartUp方法,asp.net core就会实例化这个类 并调用startup类里面的两个方法ConfigureServices和Configure ConfigureServices方法里是注册服务,注入这些服务后就可以注入到其他的方法或者类里面进行使用,这些注册的服务包括我们自己的写这些服务,也包含.net core预定义好的一些服务 也包含.net core预定义好的一些服务,有一些默认也是没有注册的,需要我们在这里注册下 方法:Configure里面,我们使用IApplicationBuilder来配置我们的中间件,在真实的项目里很少使用app.Run方法,通常app.Run里面配置的中间件都是非常简单的中间件,所以在真实的羡慕里面,不大用app.Run这个中间件 真实项目里通常使用app.use开头的这些方法 useCors是跨域的,use开头的方法把中间件都封装了另外一个方法或者另外一个类里面了 例如这里使用useWelcomePage();这个中间件,运行查看效果 打开 换个路由地址都是这个欢迎页,不管你进来是什么样的路径,都是这个欢迎页,后面的中间件就不会走了 中间件的参数通常在这里写,通常是一个对象,例如这里 然后通过参数的设置来配置中间件 例如这里我们设置中间件的路径是/Welcome

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门

ぐ巨炮叔叔 提交于 2020-11-29 11:52:48
默认的身份认证好授权系统 UserManager用来操作用户的类, Singi用来身份认证的 添加AccountController 先声明SignInManager和UserManager这两个服务 快捷键Ctrl+. 两个都需要分别进行Ctrl+.快速的生成 创建登陆的Action Login 建立View 创建LoginViewModel 主要是用户名和密码两个字段 登陆的逻辑 注册的逻辑 退出的逻辑 创建regiser的视图页面 在_Lauout里面添加了注册和登陆的链接 点击注册发现报错了。没有注册服务 注册服务 这里按照官方文档来就可以了 这里么有ApplicationDbContext 这里修改为IdentityContext 先进行数据迁移 报错,项目里面多余一个DbContext。一个是自己的DbConext 一个是Identity的DbContext 所以需要指定具体的DbContect 注册服务的时候,指明迁移的类库名称 再次尝试成功 上面只是配置了DbConext,还需要注册IdentityUser的服务 前面多加了一个叹号 密码严格要求了 参考官方文档:把这块复制过去进行修改 判断用户登陆成功后就不再显示,注册和登陆的按钮,在View页面注册ItentityUser 运行页面并不好用,没有使用中间件 登陆成功后 授权 添加一个学生

ASP.NET Core MVC 过滤器

拟墨画扇 提交于 2020-11-29 03:41:46
参考网址: https://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-4_4_3-filters.html ASP.NET Core有五种类型的过滤器,每个过滤器类型在过滤器管道中的不同阶段执行:   Authorization Filter:授权过滤器在过滤管道中第一个执行,通常用于验证当前请求的合法性,不合法后面的管道会直接跳过。它们只有一个Before方法,不像其它大多数过滤器支持前置阶段方法和后置阶段方法。(不要在授权过滤器中抛出异常,因为没有任何代码来处理异常)   Resource Filter:资源过滤器是第二个运行,在Authorization Filter之后,Model Binding之前执行。在性能方面,资源过滤器在实现缓存或截断过滤器管道尤为重要。   Action Filter:使用率最高的过滤器,在调用Action方法之前和之后执行代码。和Resource Filter类似,但Model Binding在之后执行。   Exception Filter:用于为应用程序执行异常处理策略。   Result Filter:当Action执行完成后,最后会执行过滤器。用于处理ActionResult结果输出策略。 过滤器运行顺序: 同步过滤器和异步过滤器:   using FiltersSample.Helper;

(10)ASP.NET Core 中的环境(Environments:dev, stage, prod)

|▌冷眼眸甩不掉的悲伤 提交于 2020-11-28 09:51:09
1.环境变量配置 ASP.NET Core在应用程序启动时读取环境变量(Properties\launchSettings.json)ASPNETCORE_ENVIRONMENT,并将该值存储在IHostingEnvironment.EnvironmentName中。ASPNETCORE_ENVIRONMENT可设置为任意值,但框架只支持三个值:Development(开发)、Staging (分阶段)和 Production(生产)。如果未设置ASPNETCORE_ENVIRONMENT,则默认为 Production。 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } if (env.IsProduction() || env.IsStaging() || env.IsEnvironment( " Staging_2 " )) { app.UseExceptionHandler( " /Error " ); } } Properties/launchSettings.json里面的配置如下: ●当ASPNETCORE

asp.net core 四 IOC&DI Autofac

时间秒杀一切 提交于 2020-11-28 04:32:13
其实关于IOC,DI已经有了很多的文章,但是自己在使用中还是有很多困惑,而且相信自己使用下,印象还是会比较深刻的 关于这段时间一直在学习.net core,但是这篇文章是比较重要的,也是我自己觉得学习的东西非常多的,也得到了大神的指教,在这里和大家分享下 什么是IOC? 控制反转(Inversion of Control,英文缩写为IoC)把创建对象的权利交给框架,是框架的重要特征,并非 面向对象编程 的专用术语。它包括依赖注入(Dependency Injection,简称 DI )和依赖查找(Dependency Lookup),上面的来源于百度 在做程序设计时,考虑到程序的耦合性,高扩展等问题,还是尽量需要将程序抽象化,各层的业务不再有实际的依赖关系,全部依赖于抽象也就是接口,在这种设计的情况下,接口的具体实现的创建工作最好交由IOC框架来做,或者自己扩展一个Ioc架构,完成一个构建工厂的功能,其实ico的工作就是一个产生对象的工厂,依赖于反射的技术 下面讲讲.net core,下面直接程序为core了,core框架内部包含自己的ioc框架,本文从两方面来讲,首先是自带的ioc,第二是第三方ioc(actofac),文章后面有源码 一.自带的IOC 1.定义接口以及实现 /// <summary> /// 动物类 /// </summary> public interface

DDD领域驱动设计理论篇

余生长醉 提交于 2020-11-26 09:52:43
一、Why DDD?   在加入X公司后,开始了ASP.NET Core+Docker+Linux的技术实践,也开始了微服务架构的实践。在微服务的学习中,有一本微软官方出品的《 .NET微服务:容器化.NET应用架构指南 》是我们学习的葵花宝典,纵观微软官方放出来的Demo项目的演变历史(可以参见杨晓东《 我眼中的ASP.NET Core微服务 》一文):   (1)PetShop:WebForm 的示例程序。典型的三层架构风格的应用程序。   (2)MusicStore: 针对于 MVC3~5 框架和 EF 的一个示例程序。无明显架构风格。   (3)eShop: 针对于 ASP.NET Core 的示例程序,它是一个 REST架构风格的应用程序。   分析其架构风格的转变可以看出,现代应用程序架构已经从单一的传统风格架构(N-Layered)转向了多种混合风格架构(Mixed-Style),像最新的eShopOnWeb/Container项目就包含了以下多种架构风格:   我们可以看到,其中主要包括了以下两种架构风格(虽然看起来好像有四种): 基于数据驱动的CRUD微服务 (比如上图中Catalog Microservice和Basket Microservice) 基于DDD的微服务(比如上图中的Ordering Microservice 订单微服务)   目前