.NET Core

深入探究ASP.NET Core异常处理中间件

谁都会走 提交于 2020-08-17 08:19:34
前言 全局异常处理是我们编程过程中不可或缺的重要环节。有了全局异常处理机制给我们带来了很多便捷,首先我们不用满屏幕处理程序可能出现的异常,其次我们可以对异常进行统一的处理,比如收集异常信息或者返回统一的格式等等。ASP.NET Core为我们提供了两种机制去处理全局异常,一是基于中间件的方式,二是基于Filter过滤器的方式。Filter过滤器的方式相对来说比较简单,就是捕获Action执行过程中出现的异常,然后调用注册的Filter去执行处理异常信息,在这里就不过多介绍这种方式了,接下来我们主要介绍中间件的方式。 异常处理中间件 ASP.NET Core为我们提供了几种不同处理异常方式的中间件分别是UseDeveloperExceptionPage、UseExceptionHandler、UseStatusCodePages、UseStatusCodePagesWithRedirects、UseStatusCodePagesWithReExecute。这几种方式处理的思路是一致的都是通过捕获该管道后续的管道执行过程中出现的异常,只是处理的方式不一样。一般推荐全局异常处理相关中间件写到所有管道的最开始,这样可以捕获到整个执行管道过程中的异常信息。接下来我们介绍一下最常用的三个异常处理中间件UseDeveloperExceptionPage、UseExceptionHandler

微信小程序分享朋友圈功能上线

僤鯓⒐⒋嵵緔 提交于 2020-08-17 07:25:11
一、小程序中新增分享朋友圈功能如何使用? onShareTimeline() 事件监听方式实现 onShareTimeline: function () { var user = account.getUserInfo(); if (user) { return { title: this.data.title, imageUrl: this.data.domain + this.data.imgUrl, path: 'pages/index/index?userID=' + user.id } } else { return { title: this.data.title, imageUrl: this.data.domain + this.data.imgUrl, path: 'pages/index/index' } } } 限制说明: 1. 基础库 2.11.3 开始支持,低版本需做兼容处理。 2. 本接口为 Beta 版本,暂只在 Android 平台支持 、 3. 监听右上角菜单“分享到朋友圈”按钮的行为,并自定义发享内容。 4. 不支持自定义页面路径 二、功能参数说明 跟onShareAppMessage() 参数和使用方式类似,但是 图片要求 1:1 { title:分享标题 query: 调转链接地址和参数,默认当前打开页面 imageUrl: 图片地址要求1

.net core HttpClient 使用之掉坑解析(一)

吃可爱长大的小学妹 提交于 2020-08-17 06:17:54
.net core HttpClient 使用之掉坑解析(一) 一、前言 在我们开发当中经常需要向特定URL地址发送Http请求操作,在.net core 中对httpClient使用不当会造成灾难性的问题,这篇文章主要来分享.net core中通过IHttpClientFactory 工厂来使用HttpClient的正确打开方式。 二、HttpClient使用中的那些坑 2.1 错误使用 using(var client = new HttpClient()) 我们可以先来做一个简单的测试,代码如下: public async Task GetBaiduListAsync(string url) { var html = ""; for (var i = 0; i < 10; i++) { using (var client = new System.Net.Http.HttpClient()) { var result=await client.GetStringAsync(url); html += result; } } return html; } 运行项目输出结果后,通过netstate查看下TCP连接情况: 虽然项目已经运行结束,但是连接依然存在,状态为" TIME_WAIT"(继续等待看是否还有延迟的包会传输过来;默认在windows下,TIME

.NET 5 尝鲜

随声附和 提交于 2020-08-17 04:35:51
.NET 5 尝鲜 - 开源项目TerminalMACS WPF管理端支持.NET 5 一个使用 Prism 作为模块化框架、基于多个开源控件库作为UI控件选择、集成开源 UI 界面设计的 .NET 5 WPF 客户端项目。 项目名称:TerminalMACS WPF管理端 项目开源地址: Github: https://github.com/dotnet9/TerminalMACS.ManagerForWPF Gitee: https://gitee.com/dotnet9/TerminalMACS.ManagerForWPF 作者:Dotnet9 1. 特性 使用 .NET 5 开发,体验最新 .NET 平台(和 .NET Core 3.1 无缝兼容) .NET 5 是 .NET Framework 和 .NET Core 的未来,最终将成为一个统一平台,.NET5将包含ASP.NET核心、实体框架核心、WinForms、WPF、Xamarin 和 ML.NET。 基于 Prism 8 搭建模块化框架,方便程序扩展 Prism为程序设计提供指导,旨在帮助用户更加容易的设计和构建丰富、灵活、易于维护WPF桌面应用程序。Prism使用设计模式(如MVVM,复合视图,事件聚合器),帮助你创建一个松耦合的程序。遵循这些设计模式原则,将目标程序解耦成独立的模块

.Net Core使用Unity替换原生DI

一曲冷凌霜 提交于 2020-08-17 03:48:24
一、DIP、IOC、DI   面对对象设计原则可以帮助我们开发出更好的程序,其中有一个依赖倒置原则DIP并由此引申出IOC、DI等概念。就先粗略的了解一下: DIP(依赖倒置原则):程序要依赖于抽象接口,不要依赖于具体实现。 IOC(控制反转):面对对象编程中的一种设计思想。 DI(依赖注入):组件之间依赖关系由容器在运行期决定。   总的来说控制反转(IoC)是依赖倒置原则(DIP)的实现思路;依赖注入(DI)又是IoC的一种实现方式。 二、Unity   Unity容器(Unity)是一个轻量级,可扩展的依赖注入容器。它有助于构建松散耦合的应用程序,并为开发人员提供以下优势: 简化对象创建,尤其是对于分层对象结构和依赖项 抽象要求; 这允许开发人员在运行时或配置中指定依赖关系,并简化横切关注点的管理 通过将组件配置推迟到容器来提高灵活性 服务定位能力; 这允许客户端存储或缓存容器 实例和类型拦截 按惯例注册 三、Unity替换.Net Core原生DI   关于Unity替换.Net Core原声DI我发现在网上的中文资料基本没有,所以我在Unity的Gitbub上找到了相关的内容,希望可以给大家带来帮助。   我的是.Net Core2.2首先需要通过Nuget引入Unity(5.10.2)和Unity.Microsoft.DependencyInjection(5.10.1

.Net Core 2.2升级3.1的避坑指南

筅森魡賤 提交于 2020-08-17 03:30:38
写在前面   微软在更新.Net Core版本的时候,动作往往很大,使得每次更新版本的时候都得小心翼翼,坑实在是太多。往往是悄咪咪的移除了某项功能或者组件,或者不在支持XX方法,这就很花时间去找回需要的东西了,下面是个人在迁移.Net Core WebApi项目过程中遇到的问题汇总: 开始迁移 1. 修改*.csproj项目文件 <TargetFramework>netcoreapp2. 2 </TargetFramework> 修改为 <TargetFramework>netcoreapp3.1</TargetFramework> 2 修改Program public static void Main( string [] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder( string [] args) => WebHost.CreateDefaultBuilder(args) .UseStartup <Startup>().ConfigureAppConfiguration((hostingContext, config) => { config.AddJsonFile($ " 你的json文件.json " ,

.NET和.NET Core Web APi FormData多文件上传对比

ⅰ亾dé卋堺 提交于 2020-08-17 02:04:34
前言 最近因维护.NET和.NET Core项目用到文件上传功能,虽说也做过,但是没做过什么对比,借此将二者利用Ajax通过FormData上传文件做一个总结,通过视图提交表单太简单,这里不做阐述,希望对有需要的童鞋能有力所能及的帮助。 .NET Web APi FormData文件上传 我们将参数和文件都通过FormData来上传,给出如下HTML代码 < div class ="form-horizontal" style ="margin-top:80px;" > < div class ="form-group" > < label class ="control-label col-md-2" for ="caption" > 标题 </ label > < div class ="col-md-10" > < input name ="title" id ="title" type ="text" /> </ div > </ div > < div class ="form-group" > < label class ="control-label col-md-2" for ="caption" > 文件 </ label > < div class ="col-md-10" > < input name ="file" id ="file" multiple

.NET Core微服务开发网关篇-ocelot

烂漫一生 提交于 2020-08-17 00:07:33
通过上篇我们知道,网关是外部访问的统一入口,本文采用Ocelot作为Api网关。 环境要求: vs2019 .NetCore3.1 Ocelot16.0.1 创建一个产品服务Api站点(AAStore.ProductCatalog.Api) 添加一个ProductController [Route( " api/[controller] " )] [ApiController] public class ProductController : ControllerBase { [HttpGet(template: " Get " )] public string GetProductById() { return " Product service " ; } } 运行浏览 然后再创建一个订单服务Api站点(AAStore.Orde.Api) 添加一个OrderController [Route( " api/[controller] " )] [ApiController] public class OrderController : ControllerBase { [HttpGet(template: " Get " )] public string GetOrder() { return " Order Service " ; } } 运行浏览 两个服务已经已经准备好了

龙芯开源社区上线.NET主页

…衆ロ難τιáo~ 提交于 2020-08-17 00:04:20
龙芯团队从2019年7 月份开始着手.NET Core的MIPS64支持研发,经过将近一年的研发,在2020年6月18日完成了里程碑性的工作,在github CoreCLR 仓库: https://github.com/gsvm/coreclr , 随后受到.NET社区的很大参与热情鼓舞之下,2020年7月7日,龙芯团队在github发布了 corefx: https://github.com/gsvm/corefx 、core-setup : https://github.com/gsvm/core-setup 。 2020年7月9日,龙芯团队发布了 dotnet 运行时、aspnet core 运行时与 sdk 的 EA 版本,见 loongson-dotnet/releases 。同时在龙芯开源社区上线了.NET主页: http://www.loongnix.org/index.php/Dotnet 。据主页上的介绍龙芯版本 .NET 平台正在开发阶段,该平台基于 .NET Core ,初始版本为3.0,后续会升级至3.1。欢迎贡献 相关文章: 龙芯团队完成CoreCLR MIPS64移植,已在github开源 dotnet core 在 MIPS64 下的移值进度:EA 版本已经发布 来源: oschina 链接: https://my.oschina.net/u

ASP.NET CORE 管道模型及中间件使用解读

江枫思渺然 提交于 2020-08-16 16:55:21
说到ASP.NET CORE 管道模型不得不先来看看之前的ASP.NET 的管道模型,两者差异很大,.NET CORE 3.1 后完全重新设计了框架的底层,.net core 3.1 的管道模型更加灵活便捷,可做到热插拔,通过管道可以随意注册自己想要的服务或者第三方服务插件. ASP.NET 管道 请求进入ASP.NET 工作进程后,由进程创建HttpWorkRequest 对象,封装此次请求有关的所有信息,然后进入HttpRuntime 类进行进一步的处理。HttpRuntime 通过请求信息创建HttpContext 上下文对象,此对象将贯穿整个管道,直到响应结束。同时创建或从应用程序池里初始化一个HttpApplication对象,由此对象开始处理之前注册的多个HttpModule。之后调用HandlerFactory 创建Handler处理程序,最终处理此次请求内容,生存响应返回。 以前的管道模型是全家桶方式,所有的管道不支持热插拔,一次性全部集成在里面,所有这也是ASP.NET 没有.NET CORE 性能好的一大原因所在。 IHttpModule 和IHttpHandler 已经不复存在了,取而代之的是一个个中间件(Middleware)。Server将接收到的请求直接向后传递,依次经过每一个中间件进行处理,然后由最后一个中间件处理并生成响应内容后回传