ASP.NET Core

探索ASP.Net Core 3.0系列六:ASP.NET Core 3.0新特性启动信息中的结构化日志

两盒软妹~` 提交于 2020-12-17 15:36:41
前言:在本文中,我将聊聊在ASP.NET Core 3.0中细小的变化——启动时记录消息的方式进行小的更改。 现在,ASP.NET Core不再将消息直接记录到控制台,而是正确使用了logging 基础结构,来生成结构化日志。 翻译: Andrew Lock https://andrewlock.net/new-in-aspnetcore-3-structured-logging-for-startup-messages/ 探索ASP.NET Core 3.0系列一:新的项目文件、Program.cs和generic host 探索ASP.Net Core 3.0系列二:聊聊ASP.Net Core 3.0 中的Startup.cs 探索 ASP.Net Core 3.0系列三:ASP.Net Core 3.0中的Service provider validation 探索ASP.Net Core 3.0系列四:在ASP.NET Core 3.0的应用中启动时运行异步任务 探索 ASP.Net Core 3.0系列五:引入IHostLifetime并弄清Generic Host启动交互 一、ASP.NET Core 2.x中恼人的非结构化日志 当您在ASP.NET Core 2.x中启动应用程序时,默认情况下,ASP.NET Core会将一些有关您的应用程序的信息输出到控制台

GraphQL:打造自己的Directive库

送分小仙女□ 提交于 2020-12-17 14:27:27
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。 ——出自 https://graphql.cn HotChocolate可以通过自定义Directive来对字段的值进行转换和处理,下在的例子就是给字符串给字符串类型的值转大写和替换。 using HotChocolate; using HotChocolate.Data; using HotChocolate.Execution; using HotChocolate.Types; using System; using System.Collections.Generic; using System.Reflection; namespace GraphQLBase003 { class Program { static void Main(string[] args) { DirectiveDemo.Run(); } } public class DirectiveDemo { public static void Run() { var schema = SchemaBuilder.New()

在 ASP.NET Core 中使用多种方式给 Action 传参

那年仲夏 提交于 2020-12-17 14:10:40
ASP.NET Core 是一个跨平台,开源的,轻量级,高性能 并且 高度模块化的web框架。在 ASP.NET Core MVC 中有很多种方式可以给 Action 方法传递参数,比如说:url方式,querystring方式,request header,request body,form 等等。本篇就和大家一起讨论下如何使用这些方式,并且用代码去一一验证。 创建 AuthorRepository 类 在这个例子中我会使用一个 Repository 类,然后在 Controller 下的 Action 方法调用这个 Repository 来实现基本的 CURD 操作,首先我们声明一个 Author 类,代码如下: public class Author { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } AuthorRepository 类提供了如下三个方法。 GetAuthor 用于从泛型集合中获取 Author 实体 Save 用于将 Author 保存到底层的 泛型集合中 GetAuthors 用于分页获取 泛型集合中的数据 具体代码如下: public class AuthorRepository { List

小cookie,大智慧

你离开我真会死。 提交于 2020-12-17 05:05:20
Cookie是什么?cookies是你访问网站时创建的数据片段文件,通过保存浏览信息,它们使你的在线体验更加轻松。 使用cookies,可以使你保持在线登录状态,记录你的站点偏好,并为你提供本地化支持。 First-party cookies or Third-party cookies 第一方cookie由你访问的站点创建。该站点指的是地址栏显示的站点; 第三方cookie是由其他站点创建的。这些站点拥有你当前访问的网页上部分资源,如广告或图像。 第一方/第三方cookie不是绝对的标签,而是相对于用户的上下文。 同一cookie可以是第一方也可以是第三方,这取决于用户当时所在的网站。 “ 为什么要提第三方cookie,这与下面的cookie的SameSite策略密切相关。 cookie的常规使用方式 web服务端发送给浏览器的cookie,浏览器会存储并在下次请求原服务器的时候回发cookie。 在HTTP请求模型中以标头的形式体现:Response中 Set-Cookie 标头种植cookie;Request Cookie 标头携带(该请求允许携带的)cookies HTTP/1.0 200 OK Content-type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: X-BAT-FullTicketId=TGT

.NET 黑魔法

霸气de小男生 提交于 2020-12-16 10:51:49
来,全都是干货。 我们都知道在Framework版本的mvc项目中,配置数据是通过web.config里的appSettings节点配置,我们不得不写一些读取配置文件字符串的类,比如保存在静态的变量中。 而在mvc core中,这种不优雅的读取字符串的方式得到了进化,以json数据写入和读取的方式很优雅,省了很多代码,这个思想有点现在流行的对象存储。 来,上代码: 这是一个appsettings.json文件,也就是mvc core的配置文件,注意Administrator节点,它配置了网站管理员的用户名和密码,那mvc core是如何优雅的读取的呢? 首先,我们定义一个Administrator的类: 其次,在Startup.cs文件的ConfigureServices方法里写一行代码,一行,嗯,一行: 这样,我们就可以读取到配置的Administrator节点的数据啦,so handy... 这里涉及到mvc core的另外一个强大的特性,就是DI,在构造函数里注入的这个接口就是我们需要读取配置文件的数据。 很优雅吧? 来源: oschina 链接: https://my.oschina.net/u/4340851/blog/3712912

.NET 黑魔法

喜你入骨 提交于 2020-12-16 10:37:41
asp.net core 里如何记录日志呢? 这要从asp.net core的依赖注入说起,在asp.net core里的依赖注入真是无所不在,各种面向切面的接口与事件。 好吧,来点干货。 首先,我们希望有这样一种调用方式(或者说asp.net core集成的日志功能只能用这种方式): 在asp.net core里,框架内的很多功能都是依赖注入,不需要new XXX(),只需要在对象的构造函数里注入就好啦。 上图的ILogger<LogController> logger,就是asp.net core日志功能的接口。 this.logger.LogInformation("这里是日志信息的消息"); 就是记录一个信息日志,通常跟业务相关。 this.logger.LogError(e, e.StackTrace, new string[] { "附加参数1", "附加参数2" });就是记录一个异常日志。 当然,还有其他级别的方法,比如.LogDebug(),.LogWarning() 等等。 到此,如何使用日志功能已经讲完了,下来我们看看怎么配置它。 注意途中Startup方法和Configure方法,这里我们用了NLog,那么NLog是什么呢? 其实他是asp.net core ILogger接口的实现,我要通过接口注入,又没有实例化的代码,所以实例化的工作只能交由别人来做了

IdentityServer4 4.x版本 配置Scope的正确姿势

允我心安 提交于 2020-12-14 03:57:35
点击上方蓝字" 小黑在哪里 "关注我吧 前言 IdentityServer4 是为ASP.NET Core系列量身打造的一款基于 OpenID Connect 和 OAuth 2.0 认证的框架 IdentityServer4官方文档:https://identityserver4.readthedocs.io/ 看这篇文章前默认你对IdentityServer4 已经有一些了解。 本篇使用IdentityServer4的4.x版本,跟老版本的稍微有些差别。下面直接进入正题。 鉴权中心 创建IdentityServer4项目 使用IdentityServer4 来搭建一个鉴权中心,首先建议安装一下IdentityServer4的官方项目模板。也可以不安装,自己创建项目,然后NuGet安装需要的包也行。(不过还是推荐用官方的模板,很方便)。 命令行执行: dotnet new -i IdentityServer4.Templates image-20200629205619088 安装完成后会多出以下项目模板: image-20200629205731577 我这里选用is4inmem这个模板来创建项目,这个模板的数据都是写死在内存中的,并且包含了Quickstart页面,比较简单方便。 来到我的项目目录下执行: dotnet new is4inmem --name Idp

Asp.Net Core 3.0 WebApi 使用Swagger

爱⌒轻易说出口 提交于 2020-12-14 01:40:53
1、安装指定版本: Swashbuckle.AspNetCore 5.0.0-rc4(目前稳定版本4.0.1在AspNetCore3.0中会报错误) 2、后台C#代码要严格格式必须加[HttpPost]或者[HttpGet] 3、Startup类中配置如下代码 public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddRazorPages(); #region Swagger配置 services.AddSwaggerGen(c => { c.SwaggerDoc( " v1 " , new Microsoft.OpenApi.Models.OpenApiInfo { Title = " My API " , Version = " v1 " }); c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); }); #endregion services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Latest); } public void Configure

比较ASP.NET和ASP.NET Core[经典 Asp.Net v和 Asp.Net Core (Asp.Net Core MVC)]

∥☆過路亽.° 提交于 2020-12-13 07:08:47
ASP.NET Core是.与.Net Core FrameWork一起发布的ASP.NET 新版本,最初被称为ASP.NET vNext,有一系列的命名变化,ASP.NET 5.0,ASP.NET MVC CORE 6.0,最后才被命名为ASP.NET Core。 ASP.NET Core是对现有ASP.NET的彻底重写,与传统的ASP.NET框架相比,它采用了完全不同的开发方法。它是开源,并且独立于平台的。 ASP.NET Core的第一个版本是1.0,是和Visual Studio 2015 Update3一起发布的。 AspNet Core和Visual Studio项目模板经过了一系列的升级,最终的项目模板连同AspNet Core 1.1一起在Visual Studio 2017上发布(目前最新版本是AspNet Core 2.1)。 既然ASP.NET是一个全新实现的框架,那么了解传统的ASP.NET和ASP.NET Core就是十分必要的。 下面的表格展示了他们的区别: ASP.NET ASP.NET CORE 最新版本是ASP.NET 4.6 最新版本是AspNet Core 2.1 它在.NetFramework上运行,或者通常称为Full .NetFramework 它运行于.net core 和Full . NetFramework。

将 ASP.NET Core 2.0 项目升级至 ASP.NET Core 2.1.3X

空扰寡人 提交于 2020-12-13 04:36:28
阅读文本大概需要 3.3 分钟。 在上一篇文章 《 ASP.Net Core 运行错误 Http Error 502.5 解决办法 》 的最后有提到说,最推荐的升级办法是从2.0升级到2.1X版本. 操作如下 项目的例子直接使用 https://github.com/52ABP/52ABP.School 作为对象,毕竟他正好是.NET CORE 2.0的版本。 首先要下载SDK包。 地址: https://www.microsoft.com/net/download 下载最新的.NET Core 2.1的版本。 打开 LTM.School 项目后,右键项目找到LTM.School.csproj 文件,将文件中的 target framework 改为 netcoreapp2.1 修改后: < TargetFramework > netcoreapp2.1 </ TargetFramework > 然后讲对应的依赖Package包的引用进行修改。 修改前 < ItemGroup > < PackageReference Include = "Microsoft.AspNetCore.All" Version = "2.0.3" /> < PackageReference Include = "Microsoft.EntityFrameworkCore.SqlServer"