基于Basic auth 的一个C# 示例
2024/5/27 11:41:04

最近在做公司的一个项目时,客户需要我们定时获取他们矩阵系统的数据。在与客户进行对接时,提到他们的接口使用的目前不常用的BASIC 认证。天呢,它好不安全,容易被不法人监听,咋还在使用呀。但是没办法呀,谁让客户的系统就是这样的呢。因为现在开发中绝大多数使用的是基于Bearer 认证的。 1、研究 1.Basic auth是在HTTP 1.0提出的,是一种较为简单的HTTP认证方式,客户端通过明文 (Base64编码格式)传输用户名和密码到服务端进行认证,通常需要配合HTTPS来保证信息传输的安全。 3.若是

.net core8 knife4 web api文档
2024/5/27 11:41:03

knife4官网:https:github.comluoyunchongIGeekFan.AspCe.Knife4jUI 1.创建. ce8 web api项目 2.nuget包管理添加如下包:Swashbuckle.AspCe.SwaggerSwashbuckle.AspCe.SwaggerGenIGeekFan.AspCe.Knife4jUI 3.在项目右键属性生成输出 勾选 文档文件如图: 保持,关闭。 项目右键,重新生产,再打开可以看到xml路径,可以复制填入API文档路径。 4.修改Prog

windowForm程序的webView2错误 System.IO.FileNotFoundException: 系统找不到指定的文件。(异常来自HRESULT:0x80070002)
2024/5/27 11:41:01

最近开发公司的一个项目,要求打包在windows中执行的exe可执行文件 开始我想到的是使用windowsFm里面webView嵌套网页执行, vs自带提供的WebBrowser的内核是ie7的,兼容性确实不好,后面使用Microsoft.Web.WebView2(通过NuGet安装)兼容性问题解决了。 在我的电脑上可以完整的运行,但是在同事的电脑上运行出现错误 只告诉你系统找不到指定文件,没有说是什么文件 后面打印得出错误: Microsoft.Web.WebView2.Ce.WebView2Runti

4、Git远程仓库
2024/5/27 11:41:01

4.1、 常用的托管服务[远程仓库] 前面我们已经知道了Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库 呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。 gitHub( 地址:https:github.com )是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名gitHub 码云(地址: https:gitee.com )是国内的一个代码托管平台,由于服务器在国内,

C# 面向对象编程进阶:构造函数详解与访问修饰符应用
2024/5/27 11:41:00

C# 构造函数 构造函数是一种特殊的方法,用于初始化对象。构造函数的优势在于,在创建类的对象时调用它。它可以用于为字段设置初始值: 示例 获取您自己的 C# 服务器 创建一个构造函数: 创建一个 Car 类 class Car {public string model 创建一个字段 为 Car 类创建一个类构造函数public Car(){model = "Mustang" 为 model 设置初始值}static void Main(string[] args){Car Fd = new Car

3、Git安装与常用命令
2024/5/27 11:40:56

本教程里的git命令例子都是在Git Bash中演示的,会用到一些基本的linux命令,在此为大家提前列举: lsll 查看当前目录 cat 查看文件内容 touch 创建文件 vi vi编辑器(使用vi编辑器是为了方便展示效果,学员可以记事本、editPlus、notPad++等其它编 辑器) 3.1、 Git环境配置 3.1.1 下载与安装 下载地址: https:gitscm.comdownload 双击下载的安装文件来安装Git。安装完成后在电脑桌面(也可以是其他目录)点击右键,

使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
2024/5/27 11:40:55

前言:什么是集成配置系统? 集成配置系统的主要目的是将应用程序的配置信息与代码分离,使得配置信息可以在不需要修改代码的情况下进行更改。这样可以提高应用程序的灵活性和可维护性。 ASP. Ce 提供了一种灵活的配置系统,可以轻松地将配置信息从不同的来源加载到应用程序中,并且可以根据环境变量、命令行参数、JSON 文件、XML 文件、环境变量等不同来源来管理配置。 本文主要讲解如何在 Asp. ce webapi 中应用集成配置系统 Step By Step 步骤创建一个 ASP. Ce webapi 项目在

记一次 .NET某工控自动化系统 崩溃分析
2024/5/27 11:40:54

一:背景 1. 讲故事 前些天微信上有位朋友找到我,说他的程序偶发崩溃,分析了个把星期也没找到问题,耗费了不少人力物力,让我能不能帮他看一下,给我申请了经费,哈哈,遇到这样的朋友就是爽快,刚好周二晚上给调试训练营的朋友分享 GC标记阶段 相关知识,而这个dump所展示的问题是对这块知识的一个很好的巩固,接下来我们开始分析吧。 二:WinDbg分析 1. 为什么会崩溃 要想找到崩溃原因,还是用老命令 !analyze v ,输出如下:0:005 !analyze v CONTEXT: (.ecxr) ea

在WPF应用中实现DataGrid的分组显示,以及嵌套明细展示效果
2024/5/27 11:40:53

我在前面随笔《在Winfm系统开发中,对表格列表中的内容进行分组展示》,介绍了Winfm程序中对表格内容进行了分组的展示,在WPF应用中,同样也可以对表格的内容进行分组展示,不过处理方式和Winfm有所差异,本篇随笔同样基于SqlSugar开发框架的基础上,实现在WPF应用中实现DataGrid的分组显示,以及嵌套明细展示效果。 1、回顾Winfm的表格分组展示效果 对于常规的二维表格数据,如下所示。我们根据其中一个字段对表格数据进行分组展示,这样更方便用户对特定数据的归类展示处理。Winfm的界面中,我

被Null条件运算符摆了一道
2024/5/27 11:40:52

C#6.0引入了Null条件运算符:obj.Invoke()等价于if(obj != null)obj.Invoke()即遇到null时短路。 于是,我不假思索地写下了这样的代码:①await obj.InvokeAsync()遇到null时短路嘛,我以为是等价于这样:②if (obj != null)await obj.InvokeAsync() 于是乎,直到发生异常NullReferenceException的时候,我还信誓旦旦地认为肯定是别的对象为null,这行绝对没问题。因为耽误了一大堆时间。

C# WPF 开发一个 Emoji 表情查看软件
2024/5/27 11:40:52

微软在发布 Windows 11 系统的时候,发布过一个开源的 Emoji 表情 fluentuiemoji 。因为我经常需要里面的一些表情图片,在仓库一个个查找特别的不方便,所以我做了一个表情查看器,可以很方便的查看所有表情,同时可以定位到表情文件的位置。这套 fluentuiemoji 表情一共有 1545 个。 开源地址:https:github.comhe55EmojiViewer功能实现 fluentuiemoji 下的 assets 文件夹下的每一个子文件夹对应一个 Emoji 表情文件夹,表

C# 面向对象编程解析:优势、类和对象、类成员详解
2024/5/27 11:40:51

C# 什么是面向对象编程? OOP代表面向对象编程。 过程式编程涉及编写执行数据操作的过程或方法,而面向对象编程涉及创建包含数据和方法的对象。 面向对象编程相对于过程式编程具有几个优势:OOP执行速度更快,更容易执行 OOP为程序提供了清晰的结构 OOP有助于保持C#代码DRY("不要重复自己"),并使代码更易于维护、修改和调试 OOP使得能够创建完全可重用的应用程序,编写更少的代码并减少开发时间提示:"不要重复自己"(DRY)原则是有关减少代码重复的原则。应该提取出应用程序中常见的代码,并将其放置在单

物联网浏览器(IoTBrowser)-顶尖OS2电子秤协议实现
2024/5/27 11:40:51

本教程基于 物联网浏览器(IoTBrowser)Web串口自定义开发 ,详细的过程可以翻看之前的文章。 本篇以实现顶尖OS2系列电子秤协议对接,并集成到IoTBrowser平台。由于没有找到OS2协议的官方文档,用串口助手抓包分析了一下,简单封装了一下实现代码有点潦草。 所有的串口或者需要实时数据同步的业务都可以集成ComBase类,重量数据采集是典型的实时推送场景,由于电子秤基本只需要推送重量,需要往串口写数据,所以不需要实现发送数据接口。 代码如下:using DDS.IoT.Com using S

WinDbg学习三(字符串通配符语法)
2024/5/27 11:40:50

说明星号() 代表零个或多个字符。问号() 代表任意单个字符。包含字符列表的方括号( [ ] ) 代表列表中的任何单个字符。 恰好匹配列表中的一个字符。 在这些括号内,您可以使用连字符 () 指定范围。 例如,Prog[ert7]am 匹配“Progeam”、“Program”、“Progsam”、“Progtam”和“Prog7am”。数字符号(#) 代表零个或多个前面的字符。 例如,Lo#p 匹配“Lp”、“Lop”、“Loop”、“Looop”等。 您还可以将数字符号与括号组合起来,因此 m[ia]

C# AsyncLocal 是如何实现 Thread 间传值
2024/5/27 11:40:50

一:背景 1. 讲故事 这个问题的由来是在.高级调试训练营第十期分享ThreadStatic底层玩法的时候,有朋友提出了AsyncLocal是如何实现的,虽然做了口头上的表述,但总还是会不具体,所以觉得有必要用文字+图表的方式来系统的说一下这个问题。 二:AsyncLocal 线程间传值 1. 线程间传值途径 在 C# 编程中实现多线程以及线程切换的方式大概如下三种:Thread Task await,async这三种场景下的线程间传值有各自的实现方式,由于篇幅限制,先从 Thread 开始聊吧。本质上来

在WPF应用中,结合阿里矢量图标库使用Geometry图标
2024/5/27 11:40:48

在我们的SqlSugar开发框架的WPF应端中,有时候我们需要在按钮或者其他界面元素上使用一些图标,框架中我们可以使用 lepocowpfui 项目的图标库,也可以使用FontAwesomeWPF 图标库,另外我们如果喜欢阿里矢量图标库的,也可以通过使用Geometry图标来实现图标的展示,本篇随笔介绍在WPF应用中,结合阿里矢量图标库使用Geometry图标。 1、回顾lepocowpfui 项目的图标库,也可以使用FontAwesomeWPF 图标库 在我们之前介绍过的随笔《循序渐进介绍基于Commu

在.framework框架下的winfrom中使用Castle.DynamicProxy实现AOP问题小记
2024/5/27 11:40:47

1.需求:为项目中通讯PLC模块实现AOP,实现统一的日志打印,参数校验,方法执行时间统计 2.问题:①现有项目没有IOC容器,没法使用部分AOP库的方法注册到IOC,(注:如果要实现IOC对现有代码改动大,并且AOP只是针对部分模块实现)②要在尽量小的代码改动下实现 针对以上问题选择使用Castle.DynamicProxy 3.实现: ①项目中所有通讯PLC(西门子、三菱、汇川等)的类都实现了统一接口PlcConnect ②通过代理模式统一对外暴露一个代理类PlcConnectProxy ③网上有许

FluentValidation在C# WPF中的应用
2024/5/27 11:40:44

1. 引言 在.开发领域,FluentValidation以其优雅、易扩展的特性成为开发者进行属性验证的首选工具。它不仅适用于Web开发,如MVC、Web API和ASP. CE,同样也能完美集成在WPF应用程序中,提供强大的数据验证功能。本文将深入探讨如何在C# WPF项目中运用FluentValidation进行属性验证,并展示如何通过MVVM模式实现这一功能。 2. 功能概览 我们的目标是构建一个WPF应用程序,它能够通过FluentValidation实现以下验证功能:验证ViewModel层的基

物联网浏览器(IoTBrowser)-Web串口自定义开发
2024/5/27 11:40:42

物联网浏览器(IoTBrowser)Web串口自定义开发 工控系统中绝大部分硬件使用串口通讯,不论是原始串口通讯协议还是基于串口的ModbusRTU协议,在代码成面都是使用System.IO.Pts.SerialPt开发,常用的函数包括打开串口、关闭、接收数据、写入(发送)数据。IoTBrowser封装了一套基础API,前端使用js即可实现打开、关闭、发送数据、接收数据。使用SignlR自动识别客户端环境,使用长连接或WebSocket进行双工实时通讯,以达到实时展示数据的效果。下面示例演示自定义开发模拟

WPF绑定与通知属性到界面
2024/5/27 11:40:41

绑定与通知属性到界面 本文同时为b站WPF课程的笔记,相关示例代码 前言 在上一篇文章C#代码事件里面,我们介绍了利用给控件命名的方式,在后端代码中访问并修改属性。这样子直截了当,但是这样后端代码依赖于前端。如果前端的代码变动较大,后端代码可能要大面积重构。 于是利用绑定的这种方法,将前后端分离,前端只需把需要修改的属性设置好绑定变量名,后端只需盯着这些变量名进行操作。 这样还可以实现前后端双人开发,后端开发者只需把那些操作的接口名称告诉前端,让对方去绑定相应的空间属性即可。 绑定 控件属性设置为"{Bi

C# 语言笔记
2024/5/27 11:40:20

1. C# 初识 因为先前已经学过 C++ 了,所以在C# 的学习中,大多只记录和 C++ 不同的点,在学习的过程中,感谢刘铁猛老师的教程,您是我C# 入门的领路人。 1.1 使用 . cli 1.1.1 使用 VSCode 创建 C# 工程 先安装 C# 相关插件 创建新工程 dot new console n ProjectName构建 dot build运行 dot run更多信息访问:https:learn.microsoft.comenusdotcetutialswithvisualstudio

Net Core中使用EF Core连接Mysql数据库
2024/5/27 11:40:18

Entity Framewk Ce的前身是微软提供并主推的M框架,简称EF,其底层是对ADO.的封装。EF支持SQLServer、MYSQL、acle、Sqlite等所有主流数据库。 首先是使用时的几个模式的整理及其理解:Code First:根据代码自动创建数据库表结构甚至是数据库,可以支持多库开发,代码较少冗余,由于会自动更改数据库,如果有在实体类中自定义了字段,不希望在数据库中创建此字段(有时偷懒,不想定义ViewModel会这样做),还需要自己实现单独的生成代码。这就复杂了。 DB First:根

C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析
2024/5/27 11:40:18

C# Methods 方法是一段代码,只有在调用时才会运行。 您可以将数据(称为参数)传递给方法。 方法用于执行某些操作,也被称为函数。 为什么使用方法?为了重用代码:定义一次代码,然后多次使用。 创建一个方法 方法的定义以方法的名称开头,后跟括号()。C#提供了一些预定义的方法,您已经熟悉,例如 Main(),但您也可以创建自己的方法来执行某些操作: 示例: class Program {static void MyMethod() { 要执行的代码} }示例解释MyMethod() 是方法的名称。 s

WinDbg学习二(符号)
2024/5/27 11:40:17

在开始使用WinDbg之前,我们需要设置一下符号。 简介 符号文件包含大量的数据,比如全局变量,局部变量,源行号,这些数据在运行二进制文件时实际上并不需要,但在调试过程中很有用,比如我们写.程序时生成的PDB文件。 符号可以包括名称、类型(如果适用)、存储地址或寄存器以及任何父符号或子符号。 符号示例包括变量名(本地和全局)、函数以及模块的任何入口点。 调试器从位于本地文件系统的或从远程符号服务器加载的符号文件中获取其有关符号的信息。 使用符号服务器时,调试器将自动使用正确的符号文件版本来匹配目标中的模块

EF Core 在实际开发中,如何分层?
2024/5/27 11:40:17

前言:什么是分层?分层就是将 EF Ce 放在单独的项目中,其它项目如 Asp. ce webapi 项目引用它 这样的好处是解耦和项目职责的清晰划分,并且可以重用 EF Ce 项目 但是也会数据库迁移变得复杂起来Step by step 步骤创建一个 . 类库项目,项目名字为 BooksEFCe引用以下 Nuget 包Microsoft.EntityFramewkCe.Relational Microsoft.EntityFramewkCe.SqlServer Microsoft.EntityFrame

C#析构函数解析:资源管理的精要和使用技巧
2024/5/27 11:40:15

在C#中,析构函数(Destruct)是一个特殊的方法,用于清理对象占用的资源。它是由垃圾回收器在对象被销毁时自动调用的。析构函数的原理是在对象即将被回收时执行一些清理操作,例如释放非托管资源或执行一些对象销毁前的必要操作。 析构函数的基本原理:调用时机: 当对象被垃圾回收器回收时,析构函数会被调用。垃圾回收器负责管理和释放不再被引用的对象。 无法手动调用: 不能显式地调用析构函数。垃圾回收器负责确定何时调用析构函数。析构函数的作用:资源释放: 用于释放对象所占用的非托管资源,如文件句柄、数据库连接等。

C# Switch 语句进阶:模式匹配详解与实例演示
2024/5/27 11:40:15

在C#中,switch语句的模式匹配在C# 7.0及以上版本中引入。以下是switch语句中常见的模式及其使用方法的示例: 1. 类型模式: 优点: 用于检查对象的运行时类型,使代码更具可读性。 public static string GetObjectType(object obj) {switch (obj){case int i:return "整数类型"case string s:return "字符串类型"case double d:return "双精度浮点数类型"default:retur

WinDbg学习一(入门)
2024/5/27 11:40:15

前言 一直在零零散散的摸索WinDbg知识,但是总是不成体系,所以下定决心整理出来。 简介 WinDbg 是一个调试器,可用于分析故障转储、调试实时用户模式和内核模式代码,以及检查 CPU 寄存器和内存。那么为什么不用VS呢,一个是VS安装在开发环境上,主要用于源码级调试,生产环境调试比较困难,另外一个就是发现WinDbg确实很强大,很多问题都能定位出来。 下载 在微软官网https:learn.microsoft.comzhCNwindowshardwaredriversdebugger#previou

C#代码事件
2024/5/27 11:40:14

C#代码事件 从今天开始,WPF 的学习将上升到一个新的高度。之前主要都是围绕着界面上的内容,今天了解 C# 代码,让界面真正意义上能够有功能。 本文同时为b站WPF课程的笔记,相关示例代码 上节课自定义按钮模板以及设置触发器用触发器实现了鼠标移入和点击时按钮样式变化效果。这节课我们试着用 C# 代码来写这样的功能。 在 WPF 中,鼠标移入、鼠标点击……都被定义成了一个个事件。比如说点击的时候,可以写一个点击的事件,让其执行相应的代码。 按钮事件与访问、修改属性 给按钮添加点击事件 给 Button 添

C# Break 和 Continue 语句以及数组详解
2024/5/27 11:40:14

C# Break 它被用于“跳出” switch 语句。 break 语句也可用于跳出循环。 以下示例在 i 等于 4 时跳出循环: 示例: f (int i = 0 i 10 i++) {if (i == 4) {break}Console.WriteLine(i) }C# Continue continue 语句在循环中发生特定条件时中断一次迭代,并继续进行下一次迭代。 以下示例跳过了值为 4 的情况: 示例 f (int i = 0 i 10 i++) {if (i == 4) {conti