ASP.NET Core

如何在 ASP.NET Core 中使用 NLog 的高级特性

核能气质少年 提交于 2021-01-06 14:23:42
NLog 是一个开源的轻量级日志框架,提供了丰富的日志路由和管理功能,同时 NLog 也是非常容易的去配置和扩展,其实在之前的文章中我已经讨论过了 Nlog,在这篇我准备继续和大家讨论一下 NLog 的更多高级功能。 接下来看看如何通过 .config 和 代码方式 配置 NLog,如何去 轮转日志 ,如何将 Log 对接 database,如何使用异步的模式提高日志写入性能,同时我还会分享一些 NLog 的经验技巧。 安装 NLog 可以通过 NuGet Package Manager 可视化界面 或者 NuGet Package Manager Console 控制台 安装以下包文件。 NLog.Web.AspNetCore NLog.Extensions.Logging NLog.Config 当你安装完 NLog.Config 之后,有一个叫做 NLog.config 文件会自动引用到你的项目中,值得注意的是, NLog.Config 对 NLog 来说不是唯一的,言外之意就是你即可以用 config 模式配置,也可以用 基于代码 的模式配置。 使用 .config 文件配置 NLog NLog 提供了两种配置方式。 file-based 配置模式 code-based 配置模式 回到刚才的问题,如何采用 file-based 模式,刚才被引入的 NLog.Config

2021,未来可期

不羁岁月 提交于 2021-01-04 14:59:56
一转眼,已经是2021了。 这个公众号,也陪伴大家走过了八个月的时光。 八个月,35篇原创,坚持写一些能够经受时间考验的文章,也算是一个小小的成就。   感慨一下,因为,未来可期!   整理了一个目录,是2020年所有的文章,没有看过的小伙伴可以收藏起来,慢慢看。 灵魂拷问:你和大佬,技术差距有多大? Dotnet Core多版本API共存的优雅实现 一文说通C#中的异步迭代器 Dotnet Core下的Channel, 你用了吗? 关于C# Span的一些实践 部署Dotnet Core应用到Kubernetes(二) 部署Dotnet Core应用到Kubernetes(一) ASP.NET Core托管运行Quartz.NET作业调度详解 Dotnet Core使用特定的SDK&Runtime版本 Dotnet Core IHttpClientFactory深度研究 ASP.NET Core 3.x启动时运行异步任务(二) ASP.NET Core 3.x启动时运行异步任务(一) ASP.NET Core 3.x控制IHostedService启动顺序浅探 Dotnet Core异常处理的优雅实践 C#实践设计模式原则SOLID Dotnet Core Public API的安全实践 一文说通C#中的异步编程补遗 一文说通C#中的异步编程 你真的清楚DateTime in C

ASP.NET Core WebAPI帮助页--Swagger简单使用1.0

孤人 提交于 2021-01-03 14:36:06
1、什么是Swagger? Swagger 是一个规范且完整的框架,提供描述、生产、消费和可视化RESTful API ,它是为了解决Web API生成有用文档和帮助页的问题。 2、为啥选用swagger? 1)它具有交互式文档、客户端SDK生成和API可发现性等优点。 2)书写api说明文档的工具有很多,但是能称之框架只有swagger 3、 Swagger 规范 (swagger.json) Swagger 流的核心是 Swagger 规范,默认情况下是名为 swagger.json 的文档。 它由 Swagger 工具链(或其第三方实现)根据你的服务生成。 它描述了 API 的功能以及使用 HTTP 对其进行访问的方式。 它驱动 Swagger UI,并由工具链用来启用发现和客户端代码生成。 4、ASP.NET Core 使用Swagger生成api说明文档 4.1引用Nuget包,“ Swashbuckle.AspNetCore ” Swashbuckle.AspNetCore 是一个开源项目,用于生成 ASP.NET Core Web API 的 Swagger 文档。 Swashbuckle 有三个主要组成部分: Swashbuckle.AspNetCore.Swagger :将 SwaggerDocument 对象公开为 JSON 终结点的 Swagger

asp.net core监控—引入Prometheus(五)

廉价感情. 提交于 2021-01-03 09:06:21
上一篇博文中说到Prometheus有四种指标类型:Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要),并且我们做了一个Counter的Demo,接下来看看Histogram。 Summary:摘要 summary是采集展示百分位数,百分位定义:在一组由小到大的数字中,某个数字大于90%的数字,这个数字就是第90个的百分位数。 通过demo的来理解一下吧,假如我们业务需求是要知道订单金额10,30,50,70,90的百分位数,该怎么实现呢? 需要在MetricsHub.cs中添加Summary类型的指标收集集合: using Prometheus; using System.Collections.Generic; namespace PrometheusSample.Middlewares { public class MetricsHub { private static Dictionary<string, Counter> _counterDictionary = new Dictionary<string, Counter>(); private static Dictionary<string, Dictionary<string, Gauge>> _gaugeDictionary = new Dictionary

ASP.NET Core之依赖注入

浪子不回头ぞ 提交于 2020-12-31 12:21:41
本文翻译自: http://www.tutorialsteacher.com/core/dependency-injection-in-aspnet-core ASP.NET Core支持依赖注入,依赖注入的对象通过构造函数或者 Ioc container 内置的方法进行注入。 内置的 IoC Container ASP.NET Core框架包含了开箱即用的 Ioc容器,这个容器相比第三方的容器功能会有不足。如果想要更多例如 auto-registration、scanning、interceptors或者decorators那么可以使用第三方的容器替换内置的Ioc容器。 内置的容器是通过 IServiceProvider 接口的实现使用,默认支持构造函数注入。内置 Ioc容器管理的类称作 services。 在ASP.NET Core存在两种类型的服务: 框架服务:服务是ASP.NET Core框架的一部分,比方说 IApplicationBuilder、IHostingEnvironment、ILoggerFactory等 应用服务:由开发人员创建的服务(自定义的类型或者类) 为了使 Ioc容器自动注入应用服务,首先需要在Ioc容器注册。 注册应用服务 下面用简单的 ILog 接口以及它的显示举例来说明如何使用内置的 Ioc 容器注册并在程序中使用。 1 public

分布式日志-ExceptionLess

旧时模样 提交于 2020-12-28 04:26:59
Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web Api,Web Forms,WPF,Console,MVC 等技术栈的应用程序中,并且提供了Rest接口可以应用在 Javascript,Node.js 中。它将日志收集变得简单易用并且不需要了解太多的相关技术细节及配置。 在以前,我们做日志收集大多使用 Log4net,Nlog 等框架,在应用程序变得复杂并且集群的时候,可能传统的方式已经不是很好的适用了,因为收集各个日志并且分析他们将变得麻烦而且浪费时间。 现在Exceptionless团队给我们提供了一个更好的框架来做这件事情。 使用方式 1、可以使用官方的服务,但是试用版有限制,每天最多3000条错误日志,如需更多使只能购买付费。 2、所以一般我们都是自己搭建exceptionless服务; 具体搭建方式可以见 https://github.com/exceptionless/Exceptionless 服务搭建完毕就可以在客户端调用,这里我们结合nlog来实现; 1、新建项目,引用 < Project Sdk = "Microsoft.NET.Sdk.Web" > < PropertyGroup > < TargetFramework > netcoreapp3.1 </

龙芯.NET正式发布 开源共享与开发者共成长

早过忘川 提交于 2020-12-25 13:56:26
2020年12月19日,2020中国. NET开发者大会于苏州盛大开幕。本次大会以“开源、共享、创新”为主题,以线下城市苏州为中心,覆盖北京、上海、深圳、广州、长沙、成都、厦门、胶东等地区,是中国 .NET 开发者的大聚会,线上+线下参会人数达数十万人,覆盖城市达10+个。峰会共包含5大会场,近50场热点技术专题,数万名开发者将就各类“ .NET 开发和产品设计”相关的前沿技术话题展开深度交流。 此次开发者大会上,龙芯.NET项目及JVM负责人敖琪博士发表了《龙芯.NET到来》主题演讲,并正式发布龙芯.NET。这意味着国产龙芯已支持.NET,具备更为灵活的部署能力,也将进一步完善龙芯软件生态开发体系。会上,微软全球开发平台事业部资深副总裁Julia Liuson女士特别提到:“中国的.NET社区也积极为.NET开源项目做出了很多贡献,其中特别提一下,对龙芯平台的移植是一个非常大的工程,谢谢龙芯团队。” 此次发布的龙芯.NET 3基于.NET Core 3.1,支持该版本具备的所有主要功能,包括GC、AOT等。CoreCLR、CoreFX、ASP.NET Core等库的测试通过情况与x64/arm64相当。同时支持龙芯CPU家族,包括龙芯3A4000/3A3000/3A2000单路多路、龙芯2K1000等。支持多款操作系统,包括Loongnix、Debian、UOS、麒麟等。后续,

龙芯.NET正式发布 开源共享与开发者共成长

被刻印的时光 ゝ 提交于 2020-12-25 13:36:57
2020年12月19日,2020中国. NET开发者大会于苏州盛大开幕。本次大会以“开源、共享、创新”为主题,以线下城市苏州为中心,覆盖北京、上海、深圳、广州、长沙、成都、厦门、胶东等地区,是中国 .NET 开发者的大聚会,线上+线下参会人数达数十万人,覆盖城市达10+个。峰会共包含5大会场,近50场热点技术专题,数万名开发者将就各类“ .NET 开发和产品设计”相关的前沿技术话题展开深度交流。 此次开发者大会上,龙芯.NET项目及JVM负责人敖琪博士发表了《龙芯.NET到来》主题演讲,并正式发布龙芯.NET。这意味着国产龙芯已支持.NET,具备更为灵活的部署能力,也将进一步完善龙芯软件生态开发体系。会上,微软全球开发平台事业部资深副总裁Julia Liuson女士特别提到:“中国的.NET社区也积极为.NET开源项目做出了很多贡献,其中特别提一下,对龙芯平台的移植是一个非常大的工程,谢谢龙芯团队。” 此次发布的龙芯.NET 3基于.NET Core 3.1,支持该版本具备的所有主要功能,包括GC、AOT等。CoreCLR、CoreFX、ASP.NET Core等库的测试通过情况与x64/arm64相当。同时支持龙芯CPU家族,包括龙芯3A4000/3A3000/3A2000单路多路、龙芯2K1000等。支持多款操作系统,包括Loongnix、Debian、UOS、麒麟等。后续

如何从零开发一个NuGet软件包?

孤街醉人 提交于 2020-12-25 12:01:07
作者:依乐祝 首发地址:https://www.cnblogs.com/yilezhu/p/14175019.html 我想目前每个.net开发人员都应该知道nuget.org和NuGet软件包吧。但是,您是否曾经尝试并创建过一个nuget包呢?Nuget软件包比较容易引入到类库中。因此,可以使用NuGet软件包管理器将nuget软件包添加到任何项目中。 Nuget包的剖析 Nuget软件包不仅是 dll 文件。NuGet包是可移植的,它包含您要放入.Net项目中的所有内容。您可以在其中放置txt文件或png文件。这就是为什么我们称它们为“包裹”。您可以打包一些开发文件,并将它们以.nupkg格式在项目之间移动。 我刚刚解压缩了InputKit的nuget包,您可以在下图中看到nupkg文件的树状视图。 因此,只需查看其中的文件夹和文件。 icon.png: 这是您的NuGet包的图标文件。现在已将其嵌入.nupkg中,但在早期版本的NuGet中只能定义为url。 .nuspec nuspec是关于nuget包的元数据文件。在早期版本中,它曾经用于打包nuget包。但是在新的dotnet CLI中,此文件是由roslyn编译器从您的.csproj文件生成的。它包括软件包的目标框架,名称,许可证,图标,标签,与其他包的依赖关系以及其中描述的要放置到添加的项目中的静态文件。

解决ASP.NET Core部署到IIS,更新项目"另一个程序正在使用此文件,进程无法访问"...

≡放荡痞女 提交于 2020-12-24 13:41:57
问题 部署到IIS上的ASP.NET Core项目,在更新的时候会进程占用的错误 解决思路 初步解决方案: 1,关闭应用程序池 2,关闭网站 3,更新项目 缺点:网站没法访问,部署项目停的时间过长 答案 查询官方文档后,官方给出的方案: 如果应用正在运行,部署文件夹中的文件会被锁定。 在部署期间,无法覆盖已锁定的文件。 若要在部署中解除已锁定的文件,请使用以下方法之一 停止应用池: 使用 Web 部署并在项目文件中引用 Microsoft.NET.Sdk.Web。 系统会在 Web 应用目录的根目录中放置一个 app_offline.htm 文件 。 该文件存在时,ASP.NET Core 模块会在部署过程中正常关闭该应用并提供 app_offline.htm 文件 。 有关详细信息,请参阅 ASP.NET Core 模块配置参考。 在服务器上的 IIS 管理器中手动停止应用池。 使用 PowerShell 删除 app_offline.html (需要使用 PowerShell 5 或更高版本): PowerShell $pathToApp = 'PATH_TO_APP' # Stop the AppPool New-Item -Path $pathToApp app_offline.htm # Provide script commands here to deploy the