- 博客(211)
- 收藏
- 关注
原创 asp.netcore webapi linux独立发布部署(无需安装runtime依赖)
发布后的文件结构如下,这里linux-x64和publish文件夹下的文件内容是一样的,把linux-64文件夹内容复制到linux服务其上。我这的复制到:/Home/code/11 目录下(路径随便选择)2.在appsetting.josn文件中添加节点更改默认端口。5.使用ssh终端连接linux服务器切换到项目的根文件目录。1.创建默认的asp.netcore webapi的项目。这里会提示没有访问执行权限,我们需要把执行权限加上。ps:选择独立框架,linux-64。3.生成项目并发布到文件夹。
2024-07-26 18:55:32
1092
原创 ubantu在线部署asp.net core mvc项目
4.把发布好的文件(publish文件夹)上传到ubantu服务器上(可以使用MobaXterm工具)上面把ssh 关闭,对应的服务进程也会随之关闭,所以接下来要把服务添加守护进程,使进程可以开机自启动。我这里上传到了/Home 文件目录下了,具体可以根据自己的需求放到适合的目录。5.运行,使用asp.net core 默认的服务器(kestrel)运行。1.创建asp.net core nvc默认项目。Microsoft PPA命令配置。这里采用可移植发布到文件夹的方式。发布好的文件格式如下。
2024-07-12 18:18:47
428
原创 c# foreach 的实现原理,自定义一个实现foreach的类
foreach语句是被设计用来和可枚举类型一起使用,只要它的遍历对象是可枚举类型(实现了IEnumerable),比如数组。如果MoveNext()方法返回true,就使用IEnumerator接口的Current属性获取对象的一个引用,用于foreach循环。调用GetEnumerator()方法,返回一个IEnumerator引用。重复前面两步,直到MoveNext()方法返回false为止,此时循环停止。调用返回的IEnumerator接口的MoveNext()方法。
2024-04-26 06:23:49
433
原创 聊聊.NET Core处理全局异常有那些方法
比如上面的第二段代码,填入了“/Error”参数,表示当产生异常的时候,将定位到对应的路径,这里定位的页面就是“http://localhost:5001/Error”。如何我们没有使用过滤器捕获和处理异常,我们将得到Http状态码为500的内部错误,这种错误不方便定位问题,而且给客户端返回的信息也不够友好。上面的代码很简单,我们新建了一个自定义的异常过滤器,然后在OnExceptionAsync方法中定义自己的处理逻辑,报错之后依然让http返回状态码为200,并且将错误信息返回到客户端。
2024-04-25 05:30:23
2126
2
原创 聊聊C#委托,匿名方法,Lambda,泛型委托,表达式树
原本很简单的程序,加上几个delegate关键字,这代码一下就变得深奥了,深奥的东西懂的人就变少了,所以这个还可以作为加薪的筹码。委托是通过delegate关键字来定义,简单来说,委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。不管是匿名方法还是Lambda表达式,完成一个委托的应用,都逃不过两个步骤,一步是定义一个委托,另一步是用一个方法来实例化一个委托。有些教材,博客说到委托都会提到事件,虽然事件是委托的一个实例,但是为了理解起来更简单,今天只谈委托不谈事件。
2024-04-24 06:41:01
975
原创 c# ?? 、?.、??=、?[]运算符的使用
在 C# 中存在一些特殊的运算符,它们简化了代码的编写,主要用于处理空值(null)或简化成员访问。
2024-04-24 04:07:49
1418
原创 asp.net core 自定义过滤器 注入的几种方式和实现
在 ASP.NET Core 中,过滤器(Filters)是一种在 MVC 应用程序中运行代码的方法,可以在操作(Actions)执行之前或之后运行。过滤器可以应用于控制器(Controllers)或特定的操作方法。过滤器可以用来实现跨切面的逻辑,比如异常处理、授权、缓存、日志等。自定义过滤器通常通过实现特定的过滤器接口来创建,如,或者通过继承 Filter 的抽象类,如。
2024-04-24 03:02:43
1125
原创 EF linq中First、FirstOrDefault、Single、SingleOrDefault方法的使用场景
SingleOrDefault 方法与 Single 方法类似,但它不会引发异常,而是在结果集为空或者包含多个元素时返回默认值(通常是 null)。使用 Single 或 SingleOrDefault 当你期望结果集只包含一个匹配项时,可以帮助捕获多项匹配或空结果集的错误情况。FirstOrDefault 方法与 First 方法类似,但它不会引发异常,而是在结果集为空时返回默认值(通常是 null)。如果结果集为空,则会引发异常。在选择方法时,请根据你的查询需求和对结果的期望来决定使用哪个方法。
2024-04-24 01:41:35
553
原创 c# 构造函数 静态构造函数 内联字段(即静态字段和实例字段) 父类构造函数 父类静态构造函数 父类内联字段 执行顺序
2.子类的静态构造函数。4.父类的静态构造函数。
2024-04-23 07:45:18
613
1
原创 c# Enumerable<T>的GroupJoin方法和Join的用法和区别
方法,用于对两个集合进行连接操作。相当于 sql中的inner join。相当于 sql的 left join。方法用于生成一个扁平结果集,方法用于生成一个嵌套结果集。
2024-04-23 04:04:49
400
原创 C#中的delegate和event,及他们的区别
1、 在CLR运行时,委托FunSth实际上就一个类,该类有一个参数类型为方法的构造函数,并且提供了一个Invoke实例方法,用来触发委托的执行。2.事件只能通过“+=”,“-=”方式注册和取消订户处理函数,而委托除此之外还可以使用“=”直接赋值处理函数。1.委托允许直接通过委托去访问相应的处理函数,而事件只能通过公布的回调函数去调用。3 、通过委托FunSth的构造函数,可以把符合定义的方法赋值给委托。3 通过FunSth委托的构造函数为事件注册委托实例。4 、调用委托的实例方法Invoke执行了方法。
2024-04-23 03:16:05
465
原创 linq select 和selectMany的区别
secondList 结果:selectMany 把集合中的list集合合并了返回。firstList 结果:select 只是list 集合中的元素返回。都是 LINQ 查询方法,但它们之间有一些区别。用于简单的投射和转换操作,而。用于处理嵌套结构并将其扁平化。
2024-04-23 01:40:43
584
原创 c# 反射的应用
需要注意的是,前面我们讲到了命名空间和装配件的关系,要查找一个类,必须指定它所在的装配件,或者在已经获得的Assembly实例上面调用GetType。程序员希望在源代码中看到程序的逻辑,反射却绕过了源代码的技术,因而会带来维护的问题,反射代码比相应的直接代码更复杂。委托是C#中实现事件的基础,有时候不可避免的要动态的创建委托,实际上委托也是一种类型:System.Delegate,所有的委托都是从这个类派生的。然后,可以调用类型的方法或访问其字段和属性。程序集包含模块,而模块包含类型,类型又包含成员。
2024-04-21 02:05:13
643
原创 .NET StackExchange.Redis 操作redis
下面是一个简单的示例,展示了如何使用 C# 中的 StackExchange.Redis 库与 Redis 进行交互,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)操作。每个命令都有一个单独的方法来执行相应的 Redis 命令。这个示例演示了如何连接到本地 Redis 实例,并分别使用字符串、哈希、列表、集合和有序集合的命令进行交互。每个命令都被封装在一个单独的方法中,使代码更清晰易读。
2024-04-21 00:08:35
774
原创 c#多线程 使用lock锁
关键字可以确保在同一时刻只有一个线程可以访问被锁定的代码块,从而避免线程资源竞争。,从而避免了线程资源竞争,确保了正确的递增操作。这样,只有一个线程可以同时访问。在这个示例中,我们使用。
2024-04-20 22:27:59
552
原创 asp.net core rabbitmq的基本使用
要在 .NET Core 应用程序中实现使用 RabbitMQ 发送和接收消息的简单示例,首先需要在开发机器上安装 RabbitMQ 服务器并运行它。接下来,我们将创建两个控制台应用程序:一个用于发送消息(生产者),另一个用于接收消息(消费者)。
2024-04-20 00:55:24
793
1
原创 asp.net core添加log4Net日志
2.新建配置文件(log4Net.config)配置文件,名字最好是这个。要不然要配置时要指定路径,默认寻找这个名称。输入下面的内容,可以根据自己的需求配置。5.查看日志文件,会在你配置的日志目录下创建你定义好的日志文件txt。3.在program中配置log4net。·1.安装log4Net的Nuget包。
2024-04-19 09:12:05
479
原创 asp.net core mvc 路由
在ASP.NET Core MVC中,路由是一项核心功能,它负责将进来的HTTP请求映射到相应的控制器和动作方法上。ASP.NET Core支持两种路由方式:传统的基于模板的路由(约定路由)和属性路由。
2024-04-18 06:44:20
611
原创 asp.net core 8.0 使用 Autofac ioc 容器 具体实例
要在ASP.NET Core 8.0项目中具体实现使用Autofac作为IOC容器,我们将遵循一个明确的示例,从创建新项目到配置Autofac,并演示如何注册和解析服务。
2024-04-18 06:10:22
2901
原创 Asp.Net Core中的进程内托管与进程外托管模型
在ASP.NET Core中,托管模型决定了应用程序如何运行及其与Web服务器交互的方式。主要有两种托管模式:进程内托管(In-Process Hosting)和进程外托管(Out-of-Process Hosting)。每种模式都有自己的优势和使用场景。
2024-04-18 04:41:26
1116
原创 asp.net core 依赖注入后的服务生命周期
ASP.NET Core 依赖注入(DI)容器支持三种服务的生命周期选项,它们定义了服务实例的创建和销毁的时机。这里说明一下,我们采用了Action注入的方法,新注入了一个ITest2 ,来保证2个ITest2 在同一个作用域.代码验证(这边创建一个asp.net core mvc)项目。页面刷新一下单例的始终保持一样,瞬时的和作用域发生了改变。//这里采用了Action注入的方法。program注入服务。
2024-04-18 04:16:41
1071
原创 C#中的HashTable和Dictionary之间的区别
提供了更好的类型安全性和性能。因此,当你使用.NET Framework 2.0及更高版本时,建议使用。,除非有特定的理由需要使用后者。都可以用于存储键值对,但。
2024-04-18 02:58:47
571
原创 .net core8 自定义一个中间件
在.NET Core 8中自定义一个中间件,基本步骤与之前的.NET Core版本相似。中间件是ASP.NET Core请求处理管道的一个组件,它们可以在请求处理过程中被调用。
2024-04-18 02:19:55
1072
原创 .NET Core中间件管道MAP的作用和使用
在ASP.NET Core中,中间件是构建HTTP请求管道的基本组件。中间件组件负责在ASP.NET Core应用程序中处理请求和响应。中间件可以执行多种任务,例如身份验证、记录、异常处理等。你可以按顺序将多个中间件组件组合在一起,形成一个请求处理管道。请求沿着这个管道依次通过每个中间件,直到找到合适的处理程序,然后响应可以沿着相同的管道返回给客户端。
2024-04-18 01:50:33
809
原创 c# 值类型和引用类型的区别
在C#中,值类型(Value Types)和引用类型(Reference Types)是两种基本的数据类型分类,它们在内存管理、赋值方式、参数传递以及默认值等方面有着本质的区别。
2024-04-17 04:42:07
1513
原创 c#数据储存栈(stack)和堆(heap)的方式
C#中,类的数据存储是通过堆(Heap)和栈(Stack)这两种内存结构来实现的。理解这两种数据结构的工作方式有助于更好地理解C#中的数据存储机制。
2024-04-17 04:29:00
953
原创 c#字段和属性的区别
在C#中,字段(fields)和属性(properties)都是类的成员,它们提供了类存储数据的方式,但它们在用途和功能上有着明显的区别。
2024-04-17 04:11:28
1300
原创 c# 浅拷贝(Shallow Copy)和深拷贝(Deep Copy)
在C#中,拷贝对象有两种方式:浅拷贝(Shallow Copy)和深拷贝(Deep Copy)。理解这两种拷贝的区别对于管理对象和避免在程序中意外地共享或复制数据至关重要。
2024-04-17 03:43:07
774
原创 nssm 工具把asp.net core mvc变成 windows服务,使用nginx反向代理访问
nssm工具的作用:把项目部署成Windows服务,可以在系统后台运行1.创建一个asp.net core mvc的项目2.发布项目3.使用nssm工具安装服务这里就不提供安装包了,可以自己在网上下载找到文件目录,在地址栏输入 cmd安装 命令:nssm install进入图形化界面。
2024-04-04 20:52:21
1302
1
原创 windows powershell连接linux 上传下载文件
把桌面的123.txt 上传到linux home文件夹下。连接:输入下面命令,回车 输入密码进入linux系统。window上传文件到Linux服务器。linux下载文件到windows。-r:遍历文件夹下的所有文件。
2024-03-25 16:19:17
1018
原创 c#IQueryable和IEnumberable的区别
选择还是取决于具体场景。如果你需要在数据库层面优化和执行查询,是更好的选择。如果你的数据已置于内存中或数据集不大,使用可能更为适宜。正确选择可以显著影响应用程序的性能和效率。
2024-03-25 14:31:42
538
原创 c#使用linq封装分页查询
在C#中,使用LINQ进行数据访问时,可以轻松实现排序、分页等操作。下面是一个通过LINQ实现的包含排序、页码、页大小的分页查询方法示例。这个示例假设我们使用的是EF Core作为ORM框架。
2024-03-25 14:30:31
839
原创 linq where 迭代器 原理
LINQ(Language Integrated Query)是.NET框架中的一套数据查询API,它允许使用类似SQL的查询表达式来处理数据,这些数据可以是内存中的对象集合、数据库中的表、XML文档等。LINQ查询操作通常涉及延迟执行(Lazy Evaluation)和迭代器(Iterators)的概念,我们将通过讨论Where扩展方法的实现来探索其背后的原理。
2024-03-24 12:04:12
454
原创 制作nuget包并上传到nuget.org
下面是一个详细的步骤指南,用于创建一个简单的 C# NuGet 包并将其发布到 NuGet.org。我们将创建一个简单的数学库作为示例。
2024-03-23 12:34:11
1059
原创 ef core 使用 version乐观锁解决并发问题代码
首先,你需要在你的实体类中添加一个版本字段,通常以byte[]类型定义,并使用或者配置来标记它用作乐观锁。// 引入其他必要的命名空间set;} // 实体的主键// 其他属性...set;或者在你的DbContext类的()
2024-03-19 03:40:58
1507
原创 efcore事务
在 Entity Framework Core (EF Core) 中,事务用于确保一系列数据库操作要么全部成功,要么全部失败,这对于保持数据的一致性非常重要。如果你使用的是 .NET Core 3.1 或更高版本,可以通过 NuGet 安装对应的包。例如,如果你的数据库是 SQL Server,可以安装。此外,EF Core 也支持 TransactionScope,但在多个上下文之间协调事务时需要额外的考虑。来启动一个事务,然后执行我们想要在事务中完成的操作。在上面的代码中,我们通过调用。
2024-03-15 02:45:10
661
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人