前言 在项目迁移到 .net core 上面后,我们可以使用 System.Drawing.Common 组件来操作 Image,Bitmap 类型,实现生成验证码.二维码,图片操作等功能.System.Drawing.Common 组件它是依赖于 GDI+ 的,然后在 Linux 上并没有 GDI+,面向谷歌编程之后发现,Mono 团队使用 C语言 实现了GDI+ 接口,提供对非Windows系统的 GDI+ 接口访问能力,这个应该就是libgdiplus.所以想让代码在 linux 上稳定运…
在dockerfile 中添加 FROM microsoft/dotnet:2.1-aspnetcore-runtime RUN apt-get update RUN apt-get install -y --no-install-recommends libgdiplus libc6-dev 为什么会找不到 libdl (libdl.so.2) 呢?是因为 System.Drawing.Common 是在 /usr/lib/x86_64-linux-gnu/ 这个路径中找的,而容器中 libd…
还记得[One by one系列]一步步学习docker(三)--实战部署dotnetcore中遇到的问题么?容器内部启动始终是80端口,并不由命令左右. docker run --name container-name -p 81:5000 mywebapi 所谓知其然就要知其所以然,浅尝辄止并不是个好习惯,主要是以下几个因素共通导致了这种情况. 1.Kestrel配置 ASP.NET Core项目使用Kestrel作为默认的web服务器. 而集成Kestrel的ASP.NET Core有4中…
最近在写一个汉字取点阵的程序,最开始是在win环境下运行的,没发现什么异常,然后今天把程序放在centos 下后发现英文正常,中文完全变成两位的字了,最开始是字体的原因 在把宋体等安装到centos 后发现中文出来了 但完全变了另外的字,然后使用第三方的ZKWeb.System.Drawing 运行程序,发现正常,但切换回System.Drawing.Common 就会完全不认识 或者完全变了字 比如 :我是中文画出来后变成了 这完全不是这个了,阅读System.Drawing.Common的源…
.Net Core控制台项目,添加了 System.Drawing.Common 引用 #locate libdl /usr/lib64/libdl-2.17.so /usr/lib64/libdl.so.2 #cd /usr/lib64 #ln -s libdl-2.17.so libdl.so yum install libgdiplus-devel…
第一篇:把代码连接到容器 第二篇:定制Docker镜像 第三篇:发布镜像 Docker容器间的连接 Docker提供了两种方式可以用来做容器间的连接/通信: Legacy Linking:这种方式使用容器名进行连接,实际上它创建了一个桥接的网络,在这个网络里,容器间可以进行通信. 把容器添加到桥接网络:这种方式是创建了一个自定义的桥接网络,它的类型是isolated network(隔离网络),只有在这个网络里的容器才能互相通信. Legacy Linking Legacy Linking,也就…
前言 :本篇文章,我将会介绍如何在不包括MVC / Razor功能和包的情况下,添加最少的依赖项到ASP.NET Core Web API项目中. 一.MVC   VS WebApi (1)在ASP.NET的早期版本中,MVC和Web API技术栈是完全分开的. 尽管它们之间共享了许多相似的概念,但实际类型却截然不同. 这通常有点尴尬,当您意外引用错误的命名空间时,通常会导致错误. (2)在ASP.NET Core中,这不再是个问题:MVC和Web API已统一,其中MVC中的控制器和Web A…
本文结构 ASP.NET Core应用程序的构建 ASP.NET Core应用程序容器化所需注意的问题 应用程序的配置信息 端口侦听 ASP.NET Core的容器版本 docker镜像构建上下文(Build Context)与Dockerfile的配套使用 前端应用:nginx的反向代理 在容器中运行整个应用程序 总结 ASP.NET Core应用程序的构建 构建ASP.NET Core应用程序的方式有很多种,你可以使用Visual Studio 2017的项目模板直接创建,也可以在安装了.N…
问: 下面的代码,在ASP.NET Core的startup类中创建了一个MemoryCache并且存储了三个键值“entryA”,“entryB”,“entryC”,之后想在Controller中再把这三个键值从缓存中取出来,但是发现Controller中的构造函数依赖注入的IMemoryCache并不是startup类中的MemoryCache,因为Controller中的IMemoryCache没有任何键值对: How do I access the MemoryCache instanc…
Asp.Net Core 2.1发布后,正式支持System.Drawing.Common绘图了,可以用来做一些图片验证码之类的功能.但是把网站部署到docker容器里运行会遇到很多问题,也是非常闹心的,本文记录这些问题,希望帮到有需要的人. 创建网站 前提条件:安装最新版VS2017和Net Core SDK 2.1. 首先新建网站,选择Asp.Net Core 2.1 Web应用程序(模型视图控制器),不勾选docker,我习惯自行编写Dockerfile. 指定网站访问端口5000. pu…
你大概知道System.Drawing,它是一个执行图形相关任务的流行的API,同时它也不属于.NET Core的一部分.最初是把.NET Core作为云端框架设计的,它不包含非云端相关API.另一方面,.NET Core是跨平台框架,它不包含任何操作系统特定的API,例如Windows上的Active Directory活动目录 .再者,.NET Core也不包括类似,作为.NET framework一部分的,ConfigurationManager这样的诸多API. 在我之前的文章中,我已经…
问题重现: 无法正常使用  解决方法: 安装System.Drawing.Common的NuGet就能正常使用了 操作之后: 这个是.netcoe中的解决办法,.net framework解决方案中添加引用就行了 当时看了这个解决的: [译]如何在.NET Core中使用System.Drawing?…
一开始报这个错误:Unable to load shared library 'libdl' 找到libdl安装位置是/usr/lib64: #locate libdl /usr/lib64/libdl-2.17.so /usr/lib64/libdl.so.2 创建连接: #cd /usr/lib64 #ln -s libdl-2.17.so libdl.so 现在又报这个错误:Unable to load DLL 'libgdiplus' yum install libgdiplus-dev…
Docker作为新一代的虚拟化方式,未来肯定会得到广泛的应用,传统虚拟机的部署方式要保证开发环境.测试环境.UAT环境.生产环境的依赖一致性,需要大量的运维人力,使用Docker我们可以实现一次部署,到处运行. 本文介绍如何把ASP.NET Core网站部署在Docker中运行. 软件环境清单 CentOS 7.3.1611 Docker 1.12.6 .NET Core 1.1 安装Docker $ #安装Docker $ yum install docker $ #启动docker服务 $…
这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 首先新建一个asp.net core项目,这里我新建一个WebApi默认项目. 这里我就不启动项目了,模板项目肯定是能跑起来的. 对项目添加docker容器支持 右键项目>>添加>>容器支持 选择Linux. 之后项目会添加一个DockerFile文件.这个dockerfile可以跟…
Exploring Program.cs, Startup.cs and CreateDefaultBuilder in ASP.NET Core 2 preview 1 ASP.NET Core 2.0 的目标之一是已经被简洁化的基础模板.简化了其基本使用,并且让开始一个新项目变得更加简单. 明显从表面上来看,新的 Program 和 Startup 类型相比于 ASP.NET Core 1.0 更加简单.现在,我将从新的 WebHost.CreateDefaultBuilder() 方法出发…
前言 预计是通过三篇来将清楚asp.net core 3.x中的授权:1.基本概念介绍:2.asp.net core 3.x中授权的默认流程:3.扩展. 在完全没有概念的情况下无论是看官方文档还是源码都晕乎乎的,希望本文能帮到你.不过我也是看源码结合官方文档看的,可能有些地方理解不对,所以只错参考. 要求对asp.net core的基础有所有了解:Host.依赖注入.日志.配置.选项模式.终结点路由.身份验证等.还是推荐A大博客 概述 归纳来说授权就是:某人  针对某个资源  可以做什么操作,如…
TechEmpower 第19轮编程语言框架性能排行榜2020年5月28日正式发布,详见官方博客:https://www.techempower.com/blog/2020/05/28/framework-benchmarks-round-19/,TechEmpower基准测试有许多场景(也称为测试类型),此次评测多了一个综合评分选项,把拥有完整测试覆盖的框架现在将具有综合分数,这反映了测试项目类型的总体性能得分:JSON serialization, Single-query, Multi-q…
现在有了一个官方包Quartz.Extensions.Hosting实现使用Quartz.Net运行后台任务,所以把Quartz.Net添加到ASP.NET Core或Worker Service要简单得多. 我将展示如何把Quartz.Net HostedService添加到你的应用,如何创建一个简单的IJob,以及如何注册它与trigger. 简介--什么是Quartz.Net Quartz.Net是一个功能齐全的开源作业调度系统,可以在最小规模的应用程序到大型企业系统使用. 有许多ASP.…
Razor 是一个用于将基于服务器的代码嵌入到网页中的标记语法. Razor语法由 Razor 标记.c # 和 HTML 组成. 通常包含 Razor 的文件的扩展名 cshtml Razor 语法 Razor 支持 c #,并使用 @ 符号从 HTML 转换为 c #. Razor 计算 c # 表达式并在 HTML 输出中呈现. 当 @ 符号后跟Razor 保留关键字时,它会转换为 Razor 特定标记. 否则会转换为纯 C#. 该代码在 HTML 中使用单个 @ 符号呈现: <p>@U…
前言 在上一篇文章中写了如何在MVC中配置全局路由前缀,今天给大家介绍一下如何在在 json 文件中配置依赖注入. 在以前的 ASP.NET 4+ (MVC,Web Api,Owin,SingalR等)时候,都是提供了专有的接口以供使用第三方的依赖注入组件,比如我们常用的会使用 Autofac.Untiy.String.Net 等,这些第三放依赖注入组件基本上都提供了一套配置注入或者配置生命周期的方式,除了直接配置到类里面之外,还提供了要么使用 xml 文件,要么使用 json 等,那么在新的…
今天试着用VS 2017去开发一个.net core项目,想着看看.net core的开发和MVC5开发有什么区别,然后从中发现了一个VS2017的Bug. 首先,我们新建项目,ASP.NET Core Web应用程序,如图: 新建好后,我们按照习惯,在controller文件夹上面,点击鼠标右键,添加控制器...,出现了如下界面: 这个对话框什么意思呢?怎么会提示添加依赖项呢?按理来说,我们直接调试运行,项目就跑起来了!!! 先不管他,我们直接点击添加,然后稍等一会儿,等他添加依赖.完成后,出…
使用Postman进行手动测试 如果您是开发人员,测试人员或管理人员,则在构建和使用应用程序时,有时了解各种API方法可能是一个挑战. 使用带有.NET Core的Postman为您的Web API生成良好的文档和帮助页面就像进行一些HTTP调用一样简单. 让我们开始从GitHub下载简单的待办事项. 从这个链接下载并运行下面的TodoMvcSolution . 下载Postman Postman是Google Chrome应用程序,用于测试API调用.您可以从下面的网站下载并安装Postman…
作者:陈希章 发表于 2017年6月25日 谈一谈.NET 的跨平台 终于要写到这一篇了.跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标.我在前面的文章已经提到过了,Microsoft Graph 服务针对一些主流的开源平台(主要用来做跨平台应用)都有支持,例如 python,nodejs 等.他们真的非常好用,与此同时我虽然对他们也有一定的了解,但要跟我最熟悉的 Microsoft .NET 来比较的话,我自然还是更喜欢后者了. 所以,一直在等待合适的时间,要来写 Mi…
开发环境:vs2017  版本:15.3.5 项目环境:.net framework 4.6.1    模板asp.net core 2.0  Web应用程序(模型视图控制器) 身份验证:个人用户账号  存储应用内的用户帐户 因为本人并不涉及开发一些中.大规模的应用,所以习惯使用本地数据库,而不是数据库服务,为了方便管理,所以本人的所有项目都是离线数据库文件存储(.mdf). 下面开始: 一.修改数据库连接.引自“张不水”兄的研究成果. 1.相对路径: 修改appsettings.json文件中…
在 ASP.NET Core Web API 集成测试一文中, 我介绍了ASP.NET Core Web API的集成测试. 在那里我使用了测试专用的Startup类, 里面的配置和开发时有一些区别, 例如里面去掉了用户身份验证相关的中间件. 但是有些被测试的行为里面需要用到身份/授权信息. 所以本文就介绍一下在API集成测试中发送请求时使用Bearer Token作为Authorization Header的情况. 集成测试中使用Bearer Token 我这个项目里生产时使用的是Identi…
在应用程序的内存中缓存常见数据(如查找)可以显着提高您的MVC Web应用程序性能和响应时间.当然,这些数据必须定期刷新. 当然你可以使用任何方法来更新数据,例如Redis中就提供了设定缓存对象的生命时间,那么对于这种单对象的更新的做法我觉得是不符合我的编程习惯的,我们可以使用QuartZ.NET 框架来进行任务调度,我们在任务计划中进行统一的缓存更新,也就达到了我们的目的. Quartz受到良好支持,跨平台库可用于在应用程序内部调度任务.由于ASP.NET Core架构和开箱即用的中间件支持,…
在.net framework 4.5架构下使用认证(Authentication)授权(Authorization). IIS使用HttpModule进行认证(Authentication),我们可以选择自己实现认证方式并在web.config中配置,当然也可以选择IIS默认提供的几种实现,这里不再继续展开讨论. asp.net core默认提供了几种默认的实现方式,包括Identity,Facebook, Google, Microsoft Account, Twitter 等等.这里介绍B…
参考地址,官网:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-2.2&tabs=visual-studio 与https://www.jianshu.com/p/349e130e40d5 当一个WebApi完成之后,书写API文档是一件非常头疼的事,因为不仅要写得清楚,能让调用接口的人看懂,又是非常耗时耗力的一件事.在之前的一篇随笔中(…