一.介绍 在IServiceCollection调用AddHttpClient注册IHttpClientFactory服务,调用AddHttpMessageHandler以生成出站请求中间件管道. 每个处理程序都可以在出站请求前后执行工作.通过Polly 的处理程序,以表达策略处理重试.断路器.超时.隔离和回退. 二.使用http请求 1.配置注册 var host = new HostBuilder() .ConfigureServices((context, services) => { s…
JWT(json web token)是一种基于json的身份验证机制,流程如下: 通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端验证通过即可能获取想要访问的资源.关于JWT的技术,可参考网络上文章,这里不作详细说明, 这篇博文,主要说明在asp.net core 2.0中,基于jwt的web api的权限设置,即在asp.net core中怎么用JWT,再次就是不同用户或角色因为权限问题,即使援用Token,也不能访问不该访…
简述C#中IO的应用   在.NET Framework 中. System.IO 命名空间主要包含基于文件(和基于内存)的输入输出(I/O)服务的相关基础类库.和其他命名空间一样. System.IO 定义了一系列类.接口.枚举.结构和委托.它们大多数包含在 mscorlib.dll! 另外有一部分部分 System.IO 命名空间的成员则包含在systcm.dll程序集中.System.IO命名空间的多数类型主要用于编程操作物理目录和文件,而另一些类型则提供了从字符串缓冲区和内存区域中读写数…
创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添加一个User类: namespace MyFirstApp.Models { public class User { public int ID { get; set; } public string Name { get; set; } public string Email { get; se…
Http请求之基于HttpUrlConnection,支持Header,Body传值,支持Multipart上传文件: public static String post(String actionUrl, Map<String, String> headParams, Map<String, String> params, Map<String, File> files) throws IOException { String BOUNDARY = java.util…
.net core 和asp.net MVC区域请求有个区别,这里重点记录一下 asp.net MVC 区域请求直接是/区域名称/控制名称/方法名称,其他不需要设置任何东西,而Core 项目这样请求路径没有错, 只是需要另外设置以下内容,否则,请求404. 区域结构如下: 1.需要定义区域名称 using Microsoft.AspNetCore.Mvc; namespace ProjectTest.Areas.Product.Controllers { //注:这里的名称必须和区域名称一致 […
目录: 1.Core 处理HTTP请求流程 2.中间件(Middleware)&&处理流程 3.创建自定义中间件&&模拟Core的请求管道 Core 处理HTTP请求流程 Http请求来到之后,会先由WebServer( 例如IIS,Nginx) 拿到然后丢给Kestrel WebServer,再有Kestrel 将Http请求封装为HttpContext后传入给.net core 请求管道(RequestDelegate).HttpContext经过一系列middlewa…
.net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml) 首先设置 Startup.cs 文件 配置 ConfigureServices services .AddMvc(options => { options.RespectBrowserAcceptHeader = true; options.OutputFormatters.Add(new XmlSerializerOutputFormatter()); options.FormatterMapping…
.Net Core 发送https请求 .net core 调用数字证书 使用X509Certificate2 .NET下面的 .netfromwork使用和asp.net core下使用方式不一样 .Net Core中的使用方式代码: /// <summary> /// 指定Post地址使用Get 方式获取全部字符串 /// </summary> /// <param name="url">请求后台地址</param> /// <…
原文:ASP.NET Core如何限制请求频率 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_38613453/article/details/103131788 ASP.NET Core如何限制请求频率,为了防止恶意请求,我们往往会对接口请求的频率做限制,比如请求间隔,一段时间内请求的次数,针对部分IP做出不同的限制策略 如何去限制请求频率不需要我们去实现,用上AspNetCor…
前言:最近,同事在工作中遇到了使用HttpClient,有些请求超时的问题,辅导员让我下去调研一下,HttpClinet的使用方式已经改成了之前博客中提到的方式,问题的原因我已经找到了,就是因为使用了伪异步,导致阻塞主线程.在之前的博客中有园友,建议在使用静态的HttpClinet时务必使用它的Async方法,所以就得从头到尾异步化.这一点在之前的文章中没有提,这里作为补充,也感谢这位园友.关于怎么使用异步编程,在这里我就不聊了,大家可以看看其他的博客,看完公司的代码之后,我想强调的是,在使用异…
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.熔断.降级与AOP 1.1 啥是熔断? 在广义的解释中,熔断主要是指为控制股票.期货或其他金融衍生产品的交易风险,为其单日价格波动幅度规定区间限制,一旦成交价触及区间上下限,交易则自动中断一段时间(“熔即断”),或就此“躺平”而不得超过上限或下限(“熔而不断”). 而对于微服务来说,熔断就是我们常说的“保险丝”,意为当服务出现某些状况时,切断服务,从而防止应用程序不断地常识执行可能会失败的操作造成系统的“雪崩”,或者大量的超时等待…
netnrf 响应式框架 用于快速开发的响应式框架 演示:https://rf2.netnr.com v3.x 前端采用 jQuery + Bootstrap + EasyUI + AceAdmin + fontAwesome 后端采用 .NET Core + EF + SQL(SQLServer.MySQL.PostgreSQL.SQLite) 数据库脚本放置于 wwwroot/scripts/目录下 数据库转换使用的工具:http://www.szmesoft.com/DB2DB 全部采用…
前言 冒个泡,近日,有关注我公众号的小伙伴私信我,遇到一个问题搞了很久没解决,此问题具有参考意义,这里跟大家分享下,希望对后续可能有需要的你能有所参考和帮助. 请求转发问题 内网环境跟外网隔离,现在外网的请求都需要一个专用服务器转接到内网处理,用app.UseRewriter转接, 从外网服务器转发到内网服务器的时候Header 里面的Authorization 居然丢失了,重新设置RewriteContext.HttpContex Header也不行,有没有办法解决?当时我的想法是,实在不行,…
1.前言 surging内部使用的是高性能RPC远程服务调用,如果用json.net序列化肯定性能上达不到最优,所以后面扩展了protobuf,messagepack序列化组件,以支持RPC二进制传输. 在这里需要感谢白纸无字Zonciu,新增了messagepack序列化,让surging 性能上跨了一大步.此篇文章我们来谈谈messagepack.protobuffer.json.net ,并且性能做下对比 开源地址:https://github.com/dotnetcore/surging…
ASP.NET HTTP管道(Pipeline)模型 1. 先讲一点,再深刻思考 一般我们都在写业务代码,优化页面,优化逻辑之间内徘徊.也许我们懂得HTTP,HTTPS的GET,POST,但是我们大部分人是不知道ASP是如何去解析HTTP,或者IIS是如何去处理页面请求.我们只知道WebForm拉控件,MVC写Controller,Action,却不知道IIS,NetFrameWork帮我们做了很多事情.那接下我们就是要去了解IIS帮我们做了些啥事情. 2. 那啥叫管道(Pipeline)模型…
介绍 大家都知道性能是API的流行语.而相应时间则是API性能的一个重要并且可测量的参数.在本文中,我们将了解如何使用代码来测量API的响应时间,然后将响应时间数据返回到客户端. 作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9520808.html 我们为什么需要测量响应时间 首先,让我们先花一点时间思考下为什么我们需要这么一个特性来测量API的响应时间.下面是编写代码来捕获响应时间的一些场景. 您需要为您的客户定义API的SLA(服务水平协议).…
如果一个请求在ASP.NET Core中运行太久,会导致请求超时,目前ASP.NET Core对请求超时的设置比较麻烦,本文列出目前收集到的一些方法,供大家参考. 部署ASP.NET Core到IIS的设置方法 如果你的ASP.NET Core项目是部署在IIS上的,那么可以在ASP.NET Core项目发布后生成的web.config文件中,进行如下设置: <?xml version="1.0" encoding="utf-8"?> <confi…
写在前面 经过前面三篇关于.NET Core Configuration的文章之后,本篇文章主要讨论如何扩展一个Configuration组件出来.如果前面三篇文章没有看到,可以点击如下地址访问 .NET Core 3.0之深入源码理解Configuration(一) .NET Core 3.0之深入源码理解Configuration(二) .NET Core 3.0之深入源码理解Configuration(三) 了解了Configuration的源码后,再去扩展一个组件就会比较简单,接下来我们…
1. Spring Spring框架是一个轻量级的解决方案,是一个潜在的一站式商店,用于构建企业就绪的应用程序.Spring框架是一个Java平台,为开发Java应用程序提供全面的基础架构支持.Spring处理基础结构,因此您可以专注于应用程序.Spring使您能够从“普通的Java对象”(POJO)构建应用程序,并将企业服务非侵入性地应用于POJO.此功能适用于Java SE编程模型以及全部和部分Java EE.但是,Spring是模块化的,允许您仅使用所需的那些部分,而不必引入其余部分.您可…
承接上文的对Kestrel的思考 上一篇介绍了如何一下在docker中发布Asp.Net Core项目(传送门)在最后尝试从外网访问网站的时候发现请求的响应头中包含了这个信息Server:Kestrel(响应请求的服务器是Kestrel) 对于ASP.NET Core的Kestrel服务器,官网上有详细的解释,同时推荐一个大佬的翻译文,详细描述Kestrel的使用方式. https://www.cnblogs.com/Wddpct/p/6123653.html 使用Nginx做为反向代理服务器…
原文:使用Enablebuffering多次读取Asp Net Core 请求体 使用Enablebuffering多次读取Asp Net Core 请求体 1 .Net Core 2.X时代 使用EnableRewind倒带 public IActionResult Index() { Request.EnableRewind(); using (var reader = new StreamReader(Request.Body)) { var body = reader.ReadToEnd…
        导读:本文已添加在晨曦微服务之旅,现在自己在尝试微服务架构,一边学边做项目快速的进入状态.当然在学习的过程中会将自己学到的知识进行分享. 一.为什么不用HttpClient         1.HttPClient使用完之后不会立即关闭开启网络连接时会占用底层socket资源,但在HttpClient调用其本身的Dispose方法时,并不能立刻释放该资源 2.如果频繁的使用HttpClient,频繁的打开链接,关闭链接消耗就会很大. 二.解决方案         1.我们可以延长…
前言 在实际应用场景中我们常常要对接口的入参进行校验, 例如分页大小是否正确, 必填参数是否已经填写等等. 最简单的实现方式如下图, 这种在实际开发中代码过于冗余, 而且不灵活. 今天介绍一种统一参数校验的方式: System.ComponentModel.Annotations 教程 一. 使用nuget安装 System.ComponentModel.Annotations 二. 在请求参数上加属性 头部引用 using System.ComponentModel.DataAnnotatio…
在web服务里面,很常见出现各种问题,需要一些响应的策略,比如服务繁忙的时候,重试,或者重试等待 服务繁忙的时候根据策略即使处理 关于接入Polly我还是沿用之前的代码,继续迭代 Web Api用的是FastHttpApi 增加在过滤器里 public class RetryAttribute: FilterAttribute { private int _count; public RetryAttribute(int count) { _count = count; } public ove…
注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 前言 在.NET中,我们有很多发送Http请求的手段,如HttpWebRequest.WebClient以及HttpClient. 在进入正文之前,先简单了解一下前2个: HttpWebRequest namespace System.Net { public class HttpWebRequest : WebRequest, ISerializable { } } HttpWebRequest位于…
POST请求: 1.请求类型:Content-Type:application/json,参数:json字符串 后台接收参数: 1)([FromBody]UserInfo user)必须以对象形式接收,(int id, string name)无法获取值 2)([FromBody]dynamic info) var id=info.id as int; 3)([FromBody]JObject obj) var id=obj["id"] as int; 2.请求类型:Content-T…
HttpClient 使用HttpClient可以很方便的请求Web API,但在使用时有一些需要注意的地方,不然会给你的程序带来毁灭性的问题. HttpClient是一个继承了IDisposable接口的对象,所以在使用的时候,需要主动调用Dispose方法来释放它.或者使用using: using(var client = new HttpClient()) { //do something with http client } 这看起来似乎没什么问题.我们使用一些代码来测试一下它,我们将发…
1.GET请求(不带参数) # coding:utf-8 import requests r=requests.get("https://www.baidu.com") #r即为response print r.text #打印返回的内容,text文本格式 print r.status_code #打印返回码 返回结果如下: <!DOCTYPE html> <!--STATUS OK--><html> <head><meta htt…
介绍 关于什么是Claim? 可以看看其他大神的文章: http://www.cnblogs.com/jesse2013/p/aspnet-identity-claims-based-authentication-and-owin.html http://www.cnblogs.com/savorboard/p/aspnetcore-identity.html 注:本人目前还是菜鸟初学阶段,如有写错的地方,望各位大鸟 指出! 场景 用户登录是一个非常常见的应用场景 .net core的登录方式跟…