.NET Core

Azure Web App (二)使用部署槽切换部署环境代码

不羁岁月 提交于 2020-08-16 12:13:59
一,引言 前天我们将到使用Azure的 Pass 服务 “Web App” 去部署我们的.NET Core Web项目,也同时有介绍到如何在VS中配置登陆中国区的Azure账号,今天接着讲,我们部署完我们的Web服务,进行完测试后,肯定是要发布到生产环境,但是我们不可能再去创建一个相同的Web App,配置上生产环境的域名,配置上生产环境的数据库连接字符串等等,而 Azure 的 Web App是可以通过自己的一个叫 “Deployment slots(部署槽)”的功能进行切换。我们来看一下微软给出的使用部署槽的优点,以下是微软的官方文档提到的优势 将应用程序部署到非生产槽具有以下优点: 可以在分阶段部署槽中验证应用更改,并将其与生产槽交换。 首先将应用部署到槽,然后将其交换到生产,这确保槽的所有实例都已准备好,然后交换到生产。 部署应用时,这样可避免停机。 流量重定向是无缝的,且不会因交换操作而删除任何请求。 当不需要预交换验证时,可以通过配置自动交换来自动化这整个工作流。 交换后,具有以前分阶段应用的槽现在具有以前的生产应用。 如果交换到生产槽的更改与预期不同,可以立即执行同一交换来收回“上一已知的良好站点”。 下面,我们正式开始今天的分享。 ----------我是分割线---------- Azure Web App 部署系列: 1,Azure Web App(一

IT技术人,“三十而已”

浪尽此生 提交于 2020-08-16 10:55:45
最近电视剧《三十而已》热播,我家的电视机自然也是被霸屏,我还是跟着妹纸看了看,开头和结局完整看完,中间看了一点,大部分都是在微信公众号上通过别人的文章看完的。我个人也已经30+了,今天也和你聊聊30+这个话题。 1、关于《三十而已》 《三十而已》是由张晓波执导,张英姬编剧,江疏影、童瑶、毛晓彤领衔主演的都市情感剧。 该剧以三位三十岁女性视角展开,讲述了都市女性在三十岁这一重要年龄节点时,遭遇到多重压力的故事。 私以为,这部电视剧可能贡献了整个7~8月一半以上的话题,它描写都市女性在30岁人生节点上面临家庭、事业、爱情上的种种波折,以及她们的态度和选择,引起了社会各界广泛的共鸣,特别是办公室的吃瓜同事们。 画外音:IT、互联网公司也无一幸免,午饭时间讨论剧情的,骂渣男的,骂林有有的,此起彼伏。 对大多数人来说,可能没有哪个年龄比30岁更“动荡”。中国传统意义中“三十而立”的观念深入人心,在这个节点周围,似乎覆盖了很多人生中最重要的时刻,结婚、买房、生子,看起来每一个事件都会让刚刚独立不久的年轻人面临巨大的压力,难以平衡工作和家庭的关系,他们必须有所选择,也必然有所放弃。更重要的是,他们很焦虑! 画外音:孔子曰:“ 吾十有五而志于学 , 三十而立 , 四十而不惑 ,五十而知天命... ” 这里的立其实是指“立德、立言和立身 ” ,换句话来说就是学有所就

IT技术人,“三十而已”

喜你入骨 提交于 2020-08-16 10:55:23
最近电视剧《三十而已》热播,我家的电视机自然也是被霸屏,我还是跟着妹纸看了看,开头和结局完整看完,中间看了一点,大部分都是在微信公众号上通过别人的文章看完的。我个人也已经30+了,今天也和你聊聊30+这个话题。 1、关于《三十而已》 《三十而已》是由张晓波执导,张英姬编剧,江疏影、童瑶、毛晓彤领衔主演的都市情感剧。 该剧以三位三十岁女性视角展开,讲述了都市女性在三十岁这一重要年龄节点时,遭遇到多重压力的故事。 私以为,这部电视剧可能贡献了整个7~8月一半以上的话题,它描写都市女性在30岁人生节点上面临家庭、事业、爱情上的种种波折,以及她们的态度和选择,引起了社会各界广泛的共鸣,特别是办公室的吃瓜同事们。 画外音:IT、互联网公司也无一幸免,午饭时间讨论剧情的,骂渣男的,骂林有有的,此起彼伏。 对大多数人来说,可能没有哪个年龄比30岁更“动荡”。中国传统意义中“三十而立”的观念深入人心,在这个节点周围,似乎覆盖了很多人生中最重要的时刻,结婚、买房、生子,看起来每一个事件都会让刚刚独立不久的年轻人面临巨大的压力,难以平衡工作和家庭的关系,他们必须有所选择,也必然有所放弃。更重要的是,他们很焦虑! 画外音:孔子曰:“ 吾十有五而志于学 , 三十而立 , 四十而不惑 ,五十而知天命... ” 这里的立其实是指“立德、立言和立身 ” ,换句话来说就是学有所就

IT技术人,“三十而已”

此生再无相见时 提交于 2020-08-16 10:53:27
最近电视剧《三十而已》热播,我家的电视机自然也是被霸屏,我还是跟着妹纸看了看,开头和结局完整看完,中间看了一点,大部分都是在微信公众号上通过别人的文章看完的。我个人也已经30+了,今天也和你聊聊30+这个话题。 1、关于《三十而已》 《三十而已》是由张晓波执导,张英姬编剧,江疏影、童瑶、毛晓彤领衔主演的都市情感剧。 该剧以三位三十岁女性视角展开,讲述了都市女性在三十岁这一重要年龄节点时,遭遇到多重压力的故事。 私以为,这部电视剧可能贡献了整个7~8月一半以上的话题,它描写都市女性在30岁人生节点上面临家庭、事业、爱情上的种种波折,以及她们的态度和选择,引起了社会各界广泛的共鸣,特别是办公室的吃瓜同事们。 画外音:IT、互联网公司也无一幸免,午饭时间讨论剧情的,骂渣男的,骂林有有的,此起彼伏。 对大多数人来说,可能没有哪个年龄比30岁更“动荡”。中国传统意义中“三十而立”的观念深入人心,在这个节点周围,似乎覆盖了很多人生中最重要的时刻,结婚、买房、生子,看起来每一个事件都会让刚刚独立不久的年轻人面临巨大的压力,难以平衡工作和家庭的关系,他们必须有所选择,也必然有所放弃。更重要的是,他们很焦虑! 画外音:孔子曰:“ 吾十有五而志于学 , 三十而立 , 四十而不惑 ,五十而知天命... ” 这里的立其实是指“立德、立言和立身 ” ,换句话来说就是学有所就

.Net程序跑在Linux上

时光总嘲笑我的痴心妄想 提交于 2020-08-16 09:58:43
.Net越来越拥抱开源了,今天就试了如何让.Net程序跑在Linux上,果然再无人可以阻挡.Net的脚步了。 Linux Disibutaion:Open Logic 7.2 1、Install .NET Core SDK SSH进入Linux,输入如下命令: sudo yum install libunwind libicu curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=827529 sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet sudo ln -s /opt/dotnet/dotnet /usr/local/bin 这里我们就安装好了.Net程序运行的环境。 2、打开VS,新建一个控制台应用程序 3、将代码文件上传到Linux上 这里我使用的是pscp command line工具上传文件到linux 代码上传成功之后,我们的程序要跑在linux上,还缺少一个project.json的文件。 输入linux命令:vi project.json 进入vi编辑器加入如下内容: { "version": "1.0.0-*", "buildOptions": { "debugType":

foreach 集合又抛经典异常了,这次一定要刨根问底

空扰寡人 提交于 2020-08-16 07:42:49
一:背景 1. 讲故事 最近同事在写一段业务逻辑的时候,程序跑起来总是报: 集合已修改;可能无法执行枚举操作 ,硬是没有找到什么情况下会导致这个异常产生,就让我来找一下bug,其实这个异常在座的每个程序员几乎都遇到过,谁也不是一生下就是大牛,简单看了下代码,确实是多线程操作foreach,但并没有对foreach进行Add,Remove操作,扫完代码其实我也是有点懵,没撤只能调试了,在foreach里套一层trycatch,查看异常的线程堆栈从而找出了问题代码,代码简化如下: static void Main(string[] args) { var dict = new Dictionary<int, int>() { [1001] = 1, [1002] = 10, [1003] = 20 }; foreach (var userid in dict.Keys) { dict[userid] = dict[userid] + 1; } } 先寻找点安慰,说实话,凭肉眼你觉得这段代码会抛出异常吗? 反正我是被骗过了,大写的尴尬,结论如下,运行一下便知。 从图中看确实是异常,说明在foreach的过程中连迭代集合的 value 都不可以修改,这让我激起了强烈的探索欲,看看FCL中到底是怎么限制的。 二:源码探索 1. 从IL中寻找答案 C#已发展到 9.0 了,到处都充斥着语法糖

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

与世无争的帅哥 提交于 2020-08-16 07:40:56
龙芯团队从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

IdentityServer4(8)- 使用密码认证方式控制API访问(资源所有者密码授权模式)

女生的网名这么多〃 提交于 2020-08-16 06:59:07
一.前言 本文已经更新到 .NET Core 2.2 OAuth 2.0 资源所有者密码模式允许客户端向令牌服务发送用户名和密码,并获取 代表该用户 的访问令牌。 除了通过无法浏览器进行交互的应用程序之外,通常建议不要使用资源所有者密码模式。 一般来说,当您要对用户进行身份验证并请求访问令牌时,使用其中一个交互式 OpenID Connect 流程通常要好得多。 在这里使用这种模式是为了学习如何快速在 IdentityServer 中使用它, 二.添加用户 就像API资源(也称为 Scope)、客户端一样,用户也有一个基于内存存储(In-Memory)的实现。 有关如何正确存储(持久化存储)和管理用户帐户的详细信息,请查看基于 ASP.NET Identity的快速入门。 TestUser 类代表测试用户及其身份信息单元(Claim)。 让我们通过在 config 类中添加以下代码来创建几个用户: 首先添加以下语句 到 Config.cs 文件中: using IdentityServer4.Test; public static List<TestUser> GetUsers() { return new List<TestUser> { new TestUser { SubjectId = "1", Username = "alice", Password =

Asp.NetCore3.1 WebApi中模型验证

时光毁灭记忆、已成空白 提交于 2020-08-16 06:04:05
前言    不管是前端,还是后端,做数据合法性验证是避免不了的,这边文章就记录一下Asp.NetCore3.1 WebApi中的模型验证; 传统写法--不使用模型验证    来,先上图:    我相信,应该绝大多数人都这样写过,反正我是,现在有时候也写,不是说这样不行, 根据业务场景进行评估,看是否合适; 这里就那用户维护新增举个例;如上图, 判断参数合法性一堆,这显得这个接口方法比较臃肿;   使用模型验证    先上图   首先在参数模型上打上注解       接口方法优化       如上图,是不是看着这个方法比较清晰了,没那么臃肿了,代码量似乎也就减少了,出Bug的概率是不是也降低了,哈哈;   调用结果,我这里什么都没传,返回400及校验消息(消息可以自定义)   如上图,当参数都为空时,在没进Action之前就被拦截了,并且返回400和校验的错误消息, 这是.NetCore自动校验了,我们可以将其关闭,让访问到Action中来,如下:       在运行进行API调用,同样传递不合法参数,这下就会走到Action中了,如下:    显然,通过这样的方式,可以管控到验证结果,并根据验证结果返回对应信息,但是,这样会需要在每个控制器中需要验证的Action方法中进行判断和处理,这无疑使得代码的复用性不好,写重复的代码,所以我们需要自己控制模型验证结果

foreach 集合又抛经典异常了,这次一定要刨根问底

我怕爱的太早我们不能终老 提交于 2020-08-16 04:49:12
一:背景 1. 讲故事 最近同事在写一段业务逻辑的时候,程序跑起来总是报: 集合已修改;可能无法执行枚举操作 ,硬是没有找到什么情况下会导致这个异常产生,就让我来找一下bug,其实这个异常在座的每个程序员几乎都遇到过,谁也不是一生下就是大牛,简单看了下代码,确实是多线程操作foreach,但并没有对foreach进行Add,Remove操作,扫完代码其实我也是有点懵,没撤只能调试了,在foreach里套一层trycatch,查看异常的线程堆栈从而找出了问题代码,代码简化如下: static void Main(string[] args) { var dict = new Dictionary<int, int>() { [1001] = 1, [1002] = 10, [1003] = 20 }; foreach (var userid in dict.Keys) { dict[userid] = dict[userid] + 1; } } 先寻找点安慰,说实话,凭肉眼你觉得这段代码会抛出异常吗? 反正我是被骗过了,大写的尴尬,结论如下,运行一下便知。 从图中看确实是异常,说明在foreach的过程中连迭代集合的 value 都不可以修改,这让我激起了强烈的探索欲,看看FCL中到底是怎么限制的。 二:源码探索 1. 从IL中寻找答案 C#已发展到 9.0 了,到处都充斥着语法糖