net接口请求参数可能会被拦截--巨坑
中间件引起的接口请求参数被拦截,导致参数一直是null,这问题困扰了我很久,值得记录
1.场景
1.1 客户端使用framework4.8做一个接口请求发送:
public static class ApiHelper
{
private static string Internal_ApiUrl = string.Empty;
private static string Client_ApiUrl = string.Empty;
static ApiHelper()
{
...
.NET 开源工业视觉系统 OpenIVS 快速搭建自动化检测平台
前言
随着工业4.0和智能制造的发展,工业视觉在质检、定位、识别等场景中发挥着越来越重要的作用。然而,开发一个完整的工业视觉系统往往需要集成相机控制、图像采集、图像处理、AI推理、PLC通信等多个模块,这对开发人员提出了较高的技术要求。
推荐一个基于 .NET 平台的开源工业视觉软件框架OpenIVS,提供完整的视觉系统 ...
关于多线程本质的思考
关于多线程本质的思考和使用技巧
前言
近来,公司因为项目过多,人手不足,一直在进行面试。过程中同事总是问道:多线程是什么,谈谈你对多线程的理解?以我愚见,这并不是一个可以在面试中快速回答的问题,如果面试的时候向我提问,我觉得我无法有条理的回答这个问题。因此,以总结多线程开发为目标,我写下这篇笔记, ...
聊一聊 .NET Dump 中的 Linux信号机制
一:背景
1. 讲故事
当 .NET程序 在Linux上崩溃时,我们可以配置一些参考拿到对应程序的core文件,拿到core文件后用windbg打开,往往会看到这样的一句信息 Signal SIGABRT code SI_USER (Sent by kill, sigsend, raise),参考如下:
(1.1d): Signal SIGABRT code SI_USER (Sent by kill, sigsend, raise)
libc_so!wait4+0x ...
.NET 记录多框架下的Json序列化属性标记问题
有小伙伴反馈,System.Text.Json使用的序列化问题,经了解是System.Text.Json不兼容System.Runtime.Serialization.DataMemenber属性标记
来个demo,
1 var testMode = new TestMode();
2 testMode.ID = "aaa";
3 var serialize = JsonSerializer.Serialize(testMode);
4 Debug.WriteLine(serialize);
5
6 [DataCont ...
Blazor项目配置Tailwind CSS 4.x
前置
已安装node.js,可使用npm
仅适用于目前的4.x(我使用的是4.1)。
基于.net 10 preview-4 Blazor Server Webapp 默认模板,但是这个关系不大。
安装
在根目录安装tailwindcss cli
npm install tailwindcss @tailwindcss/cli
实际上也可以在安装在wwwroot等目录,只要确保能配置正确的监视文件路径就行
编译与使用
1 ...
简单说说C#中委托的使用-01
简单说说C#中委托的使用-01
📑前言
距离上次更新文章,已经过去...月了。
没更新文章的主要原因,主要是因为参加工作后,感觉思维没有上学那会活跃,写文章没有思绪。再就是上班的时候把精力用光了,下班后只顾着打游戏🎮,没有恢复精力和学习📚。
在公司网上冲浪🏄的时候,看到了一篇讲解C#委托的文章,文章中描述委托的使 ...
.NET 记录App.config 文件损坏,导致软件无法正常启动
客户反馈无法正常启动软件,提示异常:
[WinError 14001] 应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.exe 工具。
远程查看异常事件日志,发现是App.config配置文件损坏:
我们打开安装目录下这个配置文件,内容是空的:
App.config文件损坏,这是一 ...
微信小程序 B2B支付程序C#、.NET
这里只贴出支付的操作,如果 需要其它方法(退款、查询 、关闭订单等)可以发邮件9067874006@qq.com。
需要准备的参数
AppID(小程序ID):wx7405------------9e7d
B2B商户号:17-------637
沙箱AppKey:NYf9s-----------------TvgXGCVqf 或 现网AppKey:HcRiLtJa------------------MBoOru
appSecret :获取access_ ...
WinDbg 分析 .NET Dump 线程锁问题
在定位 .NET 应用程序中的高 CPU 占用问题时,WinDbg 是非常强大的工具之一,尤其配合 SOS 扩展使用可以快速锁定“忙线程”或死锁等问题。
本文将基于一次实际的分析流程,演示如何一步步定位由线程锁引起的 CPU 高占用。
1. 加载 SOS 扩展(针对 .NET)
首先,我们需要加载 SOS.dll。根据你所调试的 .NET 版本不同,使用 . ...
.NET外挂系列:6. harmony中一些实用的反射工具包
一:背景
1. 讲故事
本来想研究一下 IL编织和反向补丁的相关harmony知识,看了下其实这些东西对 .NET高级调试 没什么帮助,所以本篇就来说一些比较实用的反射工具包吧。
二:反射工具包
1. AccessTools
AccessTools这个工具包用来简化反射操作,你如果看过 harmony 的底层代码,就会发现无处不在 AccessTools,比如 Harmony ...
SQL SERVER 更新锁示例
锁是用来防止在多用户或多线程环境中同时对同一数据进行修改,从而避免数据冲突和损坏。
更新锁
用于避免死锁的锁类型,通常用于对行进行更新时。它防止其他事务对资源进行修改,但允许其他事务进行读取。
示例:在更新某一行数据之前,SQL Server 会首先加上更新锁。
使用 WITH (UPDLOCK) 提示
WITH (UPDLOCK) ...
WPF 通过 GetRawPointerDeviceData 从 WM_POINTER 消息触摸裸数据
正常来说,在 WPF 里面开启 WM_POINTER 指针消息即可在框架层获取到触摸裸消息。详细请看 dotnet 读 WPF 源代码笔记 从 WM_POINTER 消息到 Touch 事件
本文的内容实际是对 dotnet 读 WPF 源代码笔记 从 WM_POINTER 消息到 Touch 事件 博客的补充,说明从 GetRawPointerDeviceData 获取 WM_POINTER 消息触摸裸数据的细节, ...
.NET外挂系列:5. harmony 中补丁参数的有趣玩法(下)
一:背景
1. 讲故事
开局一张表,故事全靠编,为了能够承上启下,先把参数列表放出来。
参数名
说明
__instance
访问非静态方法的实例(类似 this)。
__result
获取/修改返回值,要想修改用 ref。
__resultRef
修改返回引用(方法返回是 ref 返回 )。
__state
在前缀和后缀间传递自定义数据 。
___fields
...
.NET外挂系列:4. harmony 中补丁参数的有趣玩法(上)
一:背景
1. 讲故事
前面几篇我们说完了 harmony 的几个注入点,这篇我们聚焦注入点可接收的几类参数的解读,非常有意思,在.NET高级调试 视角下也是非常重要的,到底是哪些参数,用一张表格整理如下:
参数名
说明
__instance
访问非静态方法的实例(类似 this)。
__result
获取/修改返回值,要想修改用 ref。
...
用 Sidecar 容器为 .NET Core 应用做诊断和性能分析
在微服务架构和云原生应用广泛采用的今天,.NET Core 应用被越来越多地部署在 Kubernetes 集群中。然而,一旦这些应用出现性能瓶颈,仅靠传统的日志和指标可能无法定位问题的根本原因。
从 .NET Core 3 开始,微软推出了一系列跨平台的运行时诊断工具,比如:
dotnet-counters:用于查看实时性能计数器
dotnet-dump:抓 ...
.NET外挂系列:3. 了解 harmony 中灵活的纯手工注入方式
一:背景
1. 讲故事
上一篇我们讲到了 注解特性,harmony 在内部提供了 20个 HarmonyPatch 重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决 95% 的问题,言外之意还有一些事情做不到,所以剩下的 5% 只能靠 完全手工 的方式了。
二:注解特性的局限性
虽然有20个重载方法,但还不能达到 ...
C#表达式与运算符
表达式
表达式是由运算符和操作数组成的
运算符设置将对操作数进行什么样的运算
操作数包括文本、常量、变量和表达式
在C#中,如果表达式最终的计算结果为所需的类型值,表达式就可以出现在需要值或对象的任意位置
运算符
运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面
C#中提供了丰富的运 ...
2.2.net core 工作流WorkFlow流程(流程设计)
流程设计
WikeFlow官网:http://www.wikesoft.com
WikeFlow学习版演示地址:http://workflow.wikesoft.com
WikeFlow学习版源代码下载:https://gitee.com/wikesoft/WorkFlow
WikeFlow2.0演示地址:http://workflow2.wikesoft.com
WikeFlow2.0-Vue3演示地址:http://workflow2-vue3.wikesoft.com:8080/
WikeFlow2.0帮助文档 ...
C#语法: init关键字
init关键字是C#9新增的语法,用于属性或索引器中定义访问器。使用init关键字定义的访问器具有init-only的特性,即只能在对象构造期间对属性或索引器元素进行赋值,对象构造完成后,不可以再修改属性或索引器元素的值。
init关键字解决了什么问题
实际上,我个人认为init-only属性和read-only属性差别不大,都具有在对象构造 ...