.Net Core
文章平均质量分 87
changuncle
这个作者很懒,什么都没留下…
展开
-
WebApi路由机制详解——看完不会用你打我
随着前后端分离的大热,WebApi在项目中的作用也是越来越重要,由于公司的原因我之前一直没有机会参与前后端分离的项目,但WebApi还是要学的呀,因为这东西确实很有用,可单独部署、与前端和App交互都很方便,既然有良好的发展趋势,我们当然应该顺势而为——搞懂WebApi!从MVC到WebApi,路由机制一直都在其中扮演着重要的角色。它可以很简单:如果你只需要会用一些简单的路由,如/Home...原创 2018-11-12 00:25:04 · 42496 阅读 · 27 评论 -
C#异步多线程总结(delegate、Thread、Task、ThreadPool、Parallel、async、cancel)
同步与异步多线程的区别:1、同步方法卡界面(UI线程忙于计算);异步多线程不卡界面(主线程闲置,子线程在计算)2、同步方法慢(CPU利用率低、资源耗费少);异步多线程快(CPU利用率高、资源耗费多)3、同步方法是有序的;异步方法是无序的(启动无序、执行时间不确定、结束无序)实现异步多线程的6种方式与取消多线程:1、委托的异步调用2、Thread实现多线程3、Task实现多线程...原创 2018-10-13 12:02:47 · 11771 阅读 · 6 评论 -
.Net中async、await的用法及其与Task的关系
本文中使用的示例代码都是在WinForm中编写调试的,我根据是否使用await处理Task、调用异步方法/非异步方法、方法的返回值为Task/Task<Student>,做了8种情况的分析和总结。public class CommonUtil{ public static async Task<Student> AsyncGetStudentInfoHasReturn(string sname) { string name = $"Handle原创 2020-08-07 18:21:26 · 1858 阅读 · 3 评论 -
VS2017使用C#编写COM组件
一、新建类库项目VS2017已经支持Core了,不过我们新建的是Framework框架的类库。二、 在项目的属性页选中"Build" -->"Register for COM interop"中文版VS是在项目的属性页选中"生成" -->"为COM互操作注册"三、在项目的属性页设置"Signing" -->"Choose a strong name key fi...原创 2019-11-13 20:31:09 · 5055 阅读 · 6 评论 -
关于C#中Dictionary多线程情况下CPU 100%问题的详细分析
我也知道Dictionary线性不安全,但我以为它只是在多线程里面会导致脏读而已,并不知道会导致CPU 100%。那我就好奇,为什么Dictionary的ContainsKey方法,会导致CPU100%呢?这里需要结合Dictionary源码和多线程并发场景深挖一下。原创 2021-12-18 13:58:43 · 3055 阅读 · 2 评论 -
C#中字符串的内存分配与暂存池【非常详细】
一、学会查看变量的内存地址想要研究C#中字符串的内存分配情况,如果能查看字符串的内存地址就好了。其实我们可以在VS2017中查看变量的内存地址,截图中有详细说明:二、string类型简单说明string是引用类型的,在C#中引用类型的内存分配在托管堆(堆内存)上。string不支持以下两种创建方式:string str01 = "heng";//错误创建方法1strin...原创 2019-02-20 23:36:52 · 8242 阅读 · 11 评论 -
C#线程安全类型解析及用法
在C#里面我们常用各种集合、数组、List、Dictionary、Stack等,然而这些集合都是非线程安全的,当多线程同时读写这些集合的时候,有可能造成里面的数据混乱,为此微软从Net4.0开始专门提供了另一套线程安全类型,放在System.Collections.Concurrent命名空间中,我们这里以ConcurrentDictionary<T, T>为例进行讲解。一、Try...原创 2020-04-20 00:07:16 · 3242 阅读 · 3 评论 -
WebApi 跨域问题解决方案:CORS
前两篇文章介绍了WebApi项目的创建和测试,今天来说说WebApi跨域访问的问题。本篇主要介绍了利用CORS解决跨域问题一些细节和具体步骤,下面来看看吧。一、发布WebApi既然是解决WebApi跨域问题,那WebApi(http://localhost:9002)和网站(http://localhost:57447)当然是单独部署了,只有这样WebApi服务和网站的域名才会不同,要不怎...原创 2018-11-17 12:06:44 · 6097 阅读 · 3 评论 -
Swagger使用方法详解(WebApi)——看完不会用你打我
WebApi接口开发完毕后,交付给前端人员或手机端开发者时接口说明文档是必不可少的配套设备,如果公司流程不规范大家使用口口相传的交接方式,而且没有改进的欲望,那你可以到此为止了。Swagger是方便测试接口,快速展示注释内容,生成Restful风格接口文档的框架。Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因:Swagger 可以生成一个具有互动性的API...原创 2018-11-12 18:17:09 · 19069 阅读 · 12 评论 -
.Net Core中Autofac的使用方法
Autofac是.NET里IOC(Inversion of Control)容器的一种,同类的框架还有Spring.NET,Unity,Castle等。可以通过NuGet方式将其添加到项目中使用。Autofac官方网站:http://autofac.org/一、安装Autofac二、项目结构及基础代码public interface IPlayService{ ...原创 2019-03-21 00:08:25 · 7402 阅读 · 7 评论 -
.NET Core中WebSocket的使用详解
一、WebSocket是什么初次接触WebSocket,大家都会问:我们已经有了HTTP协议,为什么还需要WebSocket?因为HTTP协议中通信只能由客户端发起,而WebSocket协议中服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,实现了浏览器与服务器全双工通信(full-duplex),WebSocket属于服务器推送技术的一种。WebSocket是HTML5的一种新协议,它使用JavaScript调用浏览器的API发出一个WebSocket请求至服原创 2020-11-05 12:40:55 · 27539 阅读 · 20 评论 -
.Net Core导出Excel防止重提交
在项目中导出Excel时,由于需要处理的数据量较大导致后台执行时间过长,造成前台页面长时间没反应,用户误以为点击失败从而再次点击导出按钮,因此出现了重提交的情况。为了避免用户重复点击按钮,我们应该在用户第一次点击导出按钮时将按钮置为不可用,直到导出成功后才可再次导出。一、解决思路1、用户第一次点击导出按钮后,将导出按钮置为不可用状态并修改按钮text为“正在导出”2、后台导出成功后往缓...原创 2019-10-14 18:55:46 · 556 阅读 · 2 评论 -
.Net Core调用WebService
一、引用WebService通过添加连接的服务(Connected Services)可以将WebService引用到.Net Core项目中。二、调用WebService中的方法(示例中的两种方法都能正常执行)private void InvokeWebservice(){ #region 方法1 //创建 HTTP 绑定对象 var bindin...原创 2019-08-30 19:12:56 · 8030 阅读 · 3 评论 -
ASP.NET Core 根据环境变量支持多个 appsettings.json配置文件
一、背景在项目开发的过程当中,开发环境与生产环境的配置肯定是不一样的。拿个最简单的例子来说,比如连接字符串这种东西,开发环境肯定不能连生产数据库。在之前的话,这种情况基本靠准备两个同名的配置文件来进行处理,然后你在本地就使用本地的配置文件,生产环境就使用生产环境的配置文件,十分麻烦。ASP.NET Core支持利用环境变量来动态配置 JSON 文件,下面就来看一下如何在项目中使用这样功能吧...原创 2019-07-07 10:58:56 · 7272 阅读 · 10 评论 -
Core使用NLog记录日志
一、新建日志表CREATE TABLE [dbo].[Sys_Log]( [Id] [varchar](50) NOT NULL CONSTRAINT [DF_Sys_Log_Id] DEFAULT (newid()), [Application] [varchar](200) NULL, [Logger] [varchar](200) NULL, [Level] [varchar...原创 2019-07-12 20:14:37 · 1312 阅读 · 3 评论 -
.Net Core 读取appsettings.json中的配置
在.net core中默认是没有*.config 文件的,配置文件都是*.json。一、NuGet包管理器引用或者在project.json写入下面这些包 "Microsoft.Extensions.Options.ConfigurationExtensions": "2.1.1", "Microsoft.Extensions.Configuration.Json": "2.1.1"...原创 2018-10-17 13:51:39 · 18953 阅读 · 9 评论