使用 Alba 对 AspnetCore项目进行测试
前言 在AspCe生态系统中我们测试项目一般使用Microsoft.AspCe.TestHost的TestServer 到.6后提供的Microsoft.AspCe.Mvc.Testing的WebApplicationFacty后者是前者的封装专门用于测试 ASP. Ce 应用程序。它简化了创建和配置测试服务器的过程。而Alba也是基于前者的封装同样提供了一些好用的测试体验 使用 Alba 进行集成测试 以下我们来体验一下TA的一些好用的测试体验: 首先,你需要在项目中安装 Alba 包。可以使用以下命令
如何同时Ping多个IP地址
遇到些问题需要同时ping多个地址来检查网络状态,找了一圈都是用批处理实现的简单同网段批量ping 既然没有现成的那就自己写个吧。。。。 https:github.comdawnlcPings Pings 高效、轻量的实时网络监控工具,支持对多个目标的ping以及记录延迟波动、链接状态、丢包率等功能。 下载 Pings.exe 为.8原生AOT编译版本 Github下载 upxPings.exe 为使用UPX压缩后的版本 Github下载 请根据需求自行选择使用的版本 使用方法 配置文件 Pings 使用
.NET8 Blazor 从入门到精通:(一)关键概念
目录Blaz 的关键概念项目模板Raz 语法依赖注入注入配置HeadOutlet 组件@code 分离Blaz 调试CSS 隔离调用Javript 最近在学习 Blaz ,在B站上找了一个国外的课程边看边学习。嗯,原价¥1503的课程,大概200多美元,课程链接如下: B站(大章节分P适合初学):. 8 Blaz 从入门到精通 B站(小章节分P适合复习):Blaz从入门到精通(中文字幕) 官网课程:Blaz From Start to FinishBlaz 的关键概念 本文主要介绍Blaz 的关键概念,每
.NET 8 通用权限框架 前后端分离,开箱即用
前言 推荐一个基于. 8 实现的通用权限开发框架Admin.,前端使用Vue3Elementplus开发。 基于. 8(Furion)SqlSugar实现的通用管理平台。整合最新技术,模块插件式开发,前后端分离,开箱即用。 集成多租户、缓存、数据校验、鉴权、事件总线、动态API、通讯、远程请求、任务调度、gRPC等众多黑科技。 代码简洁、易扩展、注释详细、易于上手、二次开发,即便是复杂业务逻辑也能迅速实现,真正实现"开箱即用"。 让开发更简单、更通用、更流行! 项目介绍 面向中小企业快速开发平台框架,框
c#获取惠普打印机状态
最近遇到一个项目,由于客户指定了打印机型号:HP LaserJet Pro M501n ,本来想着参考网上的代码,使用System.Management来实现对打印机状态的查询,测试过程中发现无论是缺纸、空闲,获取到的统统都是空闲状态,咨询售后也是说无法获取状态,也不提供SDK;后面在社区看见可以通过网页访问打印机状态,输入IP即可,索性试了下,页面如下图: 从图上可以看到有打印机当前的状态为【已打开睡眠模式】,其他状态例如缺纸也测试过,是可以正常显示的,所以想着能通过网页访问的方式,找到对应元素下面的
稀土领域生产一体化管控系统建设案例
稀土领域生产一体化管控系统案例 目 录 1. 项目背景... 2 2. 实现目标... 2 3. 整体框架... 3 4. 集控中心改造... 4 5. 车间加装传感器及网络改造... 5 6. 边缘工艺模型及仿真... 5 7. 基础工业互联网平台... 6 8. 稀土生产一体化管控业务... 6 9. 掌上工厂... 6 注:本文档为案例宣传资料,省略涉密和方案细节内容。 1. 项目背景稀土是国家
.NET 结果与错误处理利器 FluentResults
前言 在项目开发中,方法返回的结果(成功或失败)对我们开发来说很重要。传统方法,如通过异常来指示错误或使用特定的返回类型(如布尔值加输出参数),虽然有效,但可能缺乏直观性和灵活性。 FluentResults库应运而生,它以一种既流畅又富有表达力的方式,极大地优化了这一过程。通过使用FluentResults,能够以一种更加自然和易于理解的方式传递操作结果,包括成功状态、错误信息、警告以及额外信息,提高代码的可读性和可维护性。 这种方式不仅让错误处理更加集中和一致,还使得代码结构更加清晰,逻辑更加流畅。
C# 工厂模式学习
工厂模式(Facty Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,而不是通过具体类来实例化对象。工厂模式可以将对象的创建过程封装起来,使代码更具有灵活性和可扩展性。 工厂模式有几种常见的实现方式:简单工厂模式(Simple Facty Pattern): 简单工厂模式通过一个工厂类来决定创建哪种具体类的实例。这个工厂类通常提供一个静态方法,根据传入的参数创建相应的对象。工厂方法模式(Facty Method Pattern): 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例
记一次 .NET某企业数字化平台 崩溃分析
一:背景 1. 讲故事 前些天群里有一个朋友说他们软件会偶发崩溃,想分析看看是怎么回事,所幸的是自己会抓dump文件,有了dump就比较好分析了,接下来我们开始吧。 二:WinDbg 分析 1. 程序为什么会崩溃 windbg 还是非常强大的,当你双击打开的时候会自动帮你定位过去展示崩溃时刻的寄存器和线程栈上下文,都省了 !analyze v 命令分析了,输出如下:Loading unloaded module list ............... This dump file has an exce
.NET集成DeveloperSharp实现http网络请求&与其它工具的比较
爆了,爆了,DeveloperSharp系列近期又被制造业ERP、民航飞行App、建筑BIM、电力掌上营业厅、等多家大型采用,站在巨人的肩膀上你能走的更远。 支持. Ce2.0及以上,支持. Framewk4.0及以上 http请求调用是开发中经常会用到的功能。在内,调用自有项目的Web Api等形式接口时会用到;在外,调用一些第三方功能接口时,也会用到,因为,这些第三方功能往往是通过http地址的形式提供的,比如:短信服务、在线翻译、地图服务、语音智能、等… http请求调用,又分为Post与G
StackExchange.Redis跑起来,为什么这么溜?
StackExchange.Redis 是一个高性能的 Redis 客户端库,主要用于 . 环境下与 Redis 服务器进行通信,大名鼎鼎的stackoverflow 网站就使用它。它使用异步编程模型,能够高效处理大量请求。支持 Redis 的绝大部分功能,包括发布订阅、事务、Lua 脚本等。由 StackExchange 团队维护,质量和更新频率有保障。这篇文章就来给大家分享下 StackExchange.Redis 为什么玩的这么溜。 我将通过分析 StackExchange.Redis 中的同步调用
C#的奇技淫巧:利用WinRM来远程操控其他服务器上的进程
前言:有时候远程服务器的进程你想偷偷去围观一下有哪些,或者对一些比较调皮的进程进行封杀,或者对一些自己研发的服务进行远程手动启动或者重启等,又不想打开远程桌面,只想悄咪咪地执行,那也许下面的文章会对你有启发。 前提条件确保远程服务器(服务端)已启用WinRM。在远程服务器上运行以下命令可以启用和配置WinRM:winrm quickconfig确保执行远程命令的客户端和服务器之间的防火墙规则允许WinRM通信(默认使用端口5985和5986)。 本地客户端网络,需要设置为专用网络打开设置: 点击开始按
VSTO 撤回代码修改的值
不废话,直接代码 private StackAction actionStack = new StackAction()private void SetCellValues() {var wksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Wksheetvar range = wksheet.Range["A1"]var previousValue = range.Value2 保存当前状态以便恢复actionStack.Push(()
NET9 AspnetCore将整合OpenAPI的文档生成功能而无需三方库
OpenAPI 规范是用于描述 HTTP API 的标准。该标准允许开发人员定义 API 的形状,这些 API 可以插入到客户端生成器、服务器生成器、测试工具、文档等中。尽管该标准具有普遍性和普遍性,但 ASP. Ce 在框架内默认不提供对 OpenAPI 的支持。 当前 ASP. Ce 不提供对 OpenAPI 的内置支持。不过内置支持了 ApiExpler 这是一个有用的抽象,它提供有关在应用程序中注册的路由的元数据。此元数据可通过 DI 容器访问,并由生态系统中的工具(如 Asp.Api.Versi
Master of Both —— Trie的应用
Trie 树所有在老鼠岛上的老鼠都应该学习Trie树!——伟大的吱嘎鼠Trie树,就是所有Oier们喜闻乐见的字符串的超级优化的数据结构!已阅,狗屁不通。——吱嘎鼠字典树,顾名思义,是一颗很像字典的树,将相同前缀的字符串合并在一起,当出现不同时就分支,成为这样的树。在这样的树上,我们可以很快地完成关于前缀的问题。 Master of Both 题面 先看题面~ HuiBot教授是弦论和高级数据结构的大师,所以他提出了一个有趣的问题。给定一个仅由小写英文字母组成的 \(n\) 字符串序列,当按字典顺序比较字
微服务下认证授权框架的探讨
前言 市面上关于认证授权的框架已经比较丰富了大都是关于单体应用的认证授权在分布式架构下使用比较多的方案是应用网关网关里集中认证将认证通过的请求再转发给代理的服务这种中心化的方式并不适用于微服务这里讨论另一种方案认证中心利用jwt去中心化的特性减轻认证中心的压力有理解错误的地方欢迎拍砖以免误人子弟有点干货但是不多需求背景 一个项目拆分为若干个微服务根据业务形态大致分为以下几种工程 1.纯前端应用 示例一个简单的H5活动页面商户仅仅需要登录就可以参与活动 2.前后端分离应用 示例如xxx后台xxxApi由一个
EDP .Net开发框架--组织架构
职类 职类是将职务进行分类管理,并定义了职类标记和职级。职类标记会带入到该职类下的职务作为职务的标记,并为职务提供职级范围选择。“高管类”职类定义了其职级范围为“PM13至PM16”,那么该职类下的职务的职级就只能在这个范围内。 职务 定义和管理组织架构中的职务。职务必须属于某个职类。 职务的职级只能在职类定义的职级范围内选择。 职务有上下级关系。 部门可以选择一个或多个职务作为该部门的编制(部门职位)。 职务可以设置权限,用户可继承职务的权限。“董事长”,“校长”,“副校长”都是属于“校领导”职类,职级
使用Blazor构建CRUD项目
在小公司中,往往没有一个前后端分离的大型团队,去各司其职的负责构建web应用程序。面对比较简单的需求,可能所谓团队只有一个人,既要开发前端又要开发后端。 如果能有一项技术,能够前后端通吃,并且具备非常高的开发效率,那就非常适合小公司的小型项目的小型甚至一人团队来使用了。 aspdot就是这样高效的后端开发框架,而有了blaz后,C#前端也可以通吃了,真正做到了一套框架,一种语言,前后端通吃。 本文使用aspdot + blaz,快速构建了一个CRUD项目。 1. 新建项目 新的Blaz Web App,可
C#.Net筑基-类型系统②常见类型
01、结构体类型Struct 结构体 struct 是一种用户自定义的值类型,常用于定义一些简单(轻量)的数据结构。对于一些局部使用的数据结构,优先使用结构体,效率要高很多。可以有构造函数,也可以没有。因此初始化时可以new,也可以用默认default。但当给字段设置了初始值时,则必须有显示的构造函数。 结构体中可以定义字段、属性、方法,不能使用终结器。 结构体可继承接口,并实现接口,但不能继承其他类、结构体。 结构体是值类型,被分配在栈上面,因此在参数传递时为值传递。⁉️结构体始终都是分配在栈上吗?——
.NET8 Identity Register
分享给需要帮助的人:记一次 IdentityAPI 中注册的源码解读,为什么有这篇文 因为当我看到源码时,发现它的逻辑竟然是固定死的。我们并不是只能按照微软提供的源码去做。此文内容包含:设置用户账户为未验证状态、延迟用户创建、优缺点的说明、适用场景。在ASP. 8 Identity 中注册API的源码如下: routeGroup.MapPost("register" async TaskResultsOk ValidationProblem([FromBody] RegisterRequest regis
上位机开发福利!快速掌握.NET中的Modbus通信
安装nuget包 Wesky..OpenTools 1.0.8或以上版本。支持. framewk 4.6以上版本,以及所有. ce以及以上版本引用。 开发一个简单的Winfm界面,用来测试使用。如需该winfm的demo,可以在公众号【Dot Dancer】后台,回复 modbus 即可获取。 通信连接之前,可能存在多个客户端。可以写一个modbus客户端的静态数组存储。例如有五个客户端: 连接操作解析:假设有5个连接,此处都使用同一个服务端地址,实际情况请根据自己需要进行调整。连接后的客户端,存
基于WPF+Sqlite开发抽奖软件【内附源码】
在很早之前,就想过开发一款抽奖软件,却一直没有实际去做,最近经过一段时间的准备,终于开发出了一款基于WPF+Sqlite版的抽奖软件,包括客户端和管理端。本项目主要是为了熟悉WPF开发流程,仅供学习分享使用,如有不足之处,还请指正。 涉及知识点 抽奖软件是包括客户端和管理端,在抽奖软件开发过程中,主要用到了如下知识点:开发工具:Visual Studion 2022 开发框架:.6.0 + WPF MVVM框架:CommunityToolkit.Mvvm 8.2.2 数据库:Sqlite M框架:
自定义分页控件
自定义分页控件 tip: 该控件的样式用的是materialDesign库,需要下载Nuget包 CodeXamlUserControlx:Class="TestTool.CustomControls.PagingControl"xmlns="http:schemas.microsoft.comwinfx2006xamlpresentation"xmlns:x="http:schemas.microsoft.comwinfx2006xaml"xmlns:d="http:schemas.microsoft.
Dapper迁移SqlSugar问题汇总
最近群里有个小伙伴把Dapper迁移SqlSugar几个不能解决的问题进行一个汇总,我正好写一篇文章来讲解一下 一、sql where in传参问题: FROM users where id IN @ids 答: SqlSugar中应该是var sql=" FROM users where id IN (@ids)"要有()和dapper有差异 var list=db.Ado.SqlQueryUsers(sqlnew {ids=new int[]{123}}) 二、Dapper查询出来的Dyna
自定义可移动点二维坐标轴控件
自定义可移动点二维坐标轴控件 目录路由参数 坐标轴控件定义 Demo路由参数 X_YResultCollection为当前X轴对应Y轴值存储字典 public class ResultCollectionChangedEventArgs(RoutedEvent routedEvent object source IDictionarydouble double resultCollection) : RoutedEventArgs(routedEvent source) {public IDictiona
Avalonia中的线性渐变画刷LinearGradientBrush
在WPF中使用Shape实现复杂线条动画后,尝试在Avalonia中也实现同样效果。尽管官方提供了从WPF到Avalonia的快速入门文档,但由于第一次使用Avalonia,体验过程中并不是很顺利,主要是卡在线性渐变画刷LinearGradientBrush的使用上。Avalonia中的线性渐变画刷与WPF中的略有差异,但相关文档并不多,故将此次经历记录下来并分享,希望能帮助大家少走弯路。由于Avalonia在持续更新,本文所述内容仅针对Avalonia 11.0.10版本。WPF中的LinearGrad
EDP .Net开发框架--自动化日志
平台下载地址:https:gitee.comalwaysinsistedp自动化日志不需要额外调用日志相关功能即可无感实现程序集方法调用的日志记录。创建业务逻辑处理类 public class StudentBLL : BusinessLogicBaseStudentBLL 继承基类BusinessLogicBase T 定义业务逻辑方法点击查看代码 [AutoLog(ActionEnum. "学生信息")] public ResultModelbool AddStudent(StudentModel
在VB.NET项目中使用C#编写的代码
前言 VB.,全名Visual Basic .,是Microsoft .框架的一部分,是一种面向对象的编程语言。它继承了Visual Basic的易用性,同时增加了对面向对象编程的支持。VB.提供了大量的内置函数,使得开发者可以更容易地处理字符串、数学计算、文件和目录访问等任务。它还提供了对Windows Fms和WPF的强大支持,使得开发Windows桌面应用程序变得更加简单。VB.的语法简洁明了,是初学者学习面向对象编程的好选择。 我个人刚开始接触.的时候,也是使用的VB.,但是随着自己对.的深入,我
C#如何用最简单方法调用Python?
最近有群友咨询C#如何调用Python?小编尝试Python.过程中遭遇的版本兼容性和环境配置难题,小编决定寻找一个更为简单、稳定且对初学者友好的解决方案。小编搜索一番,除了Python.之外,还有其他途径能够帮助我们轻松地在C#项目调用Python脚本,那就是通过命令行调用,使用 System.Diagnostics.Process 类可以启动 Python 进程,并通过命令行参数传递脚本路径等信息。调用流程如下: 1、环境准备 在操作系统中安装好python,最好3.0以上版本;然后新建一个.8控制台
.NET中特性+反射 实现数据校验
.中特性+反射 实现数据校验 在.中,我们可以使用特性+反射来实现数据校验。特性是一种用于为程序中的代码添加元数据的机制。元数据是与程序中的代码相关联的数据,但不直接成为代码的一部分。通过特性,我们可以为类、方法、属性等添加额外的信息,这些信息可以在运行时通过反射获取和使用。 对反射不太熟悉的小伙伴可以去看我以前的文章 .中的反射 为了实现数据校验,我们可以定义一个自定义特性,并将其应用于需要校验的属性或参数上。然后,我们可以编写代码来检查这些特性,并根据特性的配置执行相应的校验逻辑。 示例代码 定义自定