![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
.net core开发
文章平均质量分 52
C#.NET Core开发技术:WPF/Winform, ASP.NET Core
彼岸大洋
美好生活是奋斗出来的
展开
-
Ocelot API 网关Nacos 服务发现
Ocelot API 网关Nacos 服务发现原创 2022-10-29 22:41:04 · 1419 阅读 · 0 评论 -
Winform宿主Asp.Net WebApi中Owin 自定义Token请求参数
此后继续Owin框架的功能流程不变;其中grant_type和username、password为固定的参数,且grant_type固定为"password",否则请求token不成功;步骤2把如上两个文件粘贴到项目中,重命名如MyOAuthAuthorizationServerHandler和。例如选用BearerToken验证利用Asp.NetOwin实现基本套路为(宿主Winform程序为例)重点来了,如果希望改变获取Token的参数,该如何处理呢?其他相关依赖包自动下载;......原创 2022-07-28 16:25:00 · 1798 阅读 · 0 评论 -
WPF:解决MaterialDesign:DialogHost 无法关闭问题
使用MaterialDesion 开发WPF应用程序:做有遮罩的弹窗效果.原创 2022-06-24 10:20:14 · 2196 阅读 · 1 评论 -
C# WaitAny WhenAny的区别
看代码 var task1 = stream.ReadAsync(bytes, 0, 4); var task2 = Task.Delay(3000); var taskfinal = Task.WaitAny(task1, task2); if (taskfinal==0) { Console.WriteLine($"task1完成");原创 2022-04-01 17:36:10 · 570 阅读 · 0 评论 -
C# 指定bit位取反
例如:一个二进制数:100100 从低位开始第三位取反,即变成:100000则可这样做:步骤1:将0x01 左移三位, 变成:000100;步骤2:再将步骤1得数取反:111011;步骤3:最后拿原来的数同步骤2的数做按位与&操作;换成代码为:int targetIndex=3;int originalNum=24;//(二级制:100100)int temp= 0x0001 << targetIndex;int result =originalNum..原创 2022-02-10 10:28:21 · 3316 阅读 · 1 评论 -
Windows下RabbitMQ 集群及应用测试
1:安装erlang环境;2:安装RabbitMQ, 以上2步都是下载安装,下一步结束;参考官网:http://www.rabbitmq.com/install-windows.html步骤2完成后,可至windows服务列表中找到RabbitMQ服务;3:删除默认guest 用户,添加管理员用户;开启RabbitMQ命令行工具:rabbitmqctl delete_user gu...原创 2019-01-30 11:36:25 · 2194 阅读 · 0 评论 -
TCP Retransmission的理解
TCPRetransmission:TCP重传,因为网络数据包未被ACK确认,为避免数据丢失而进行错误恢复,出现重传的原因很多:服务器性能下降、网络数据拥塞、网络不稳定抖动、程序bug、网络设备故障等都有可能导致数据重传。下面模拟下TCP重传的现象:写一个测试用的服务器和客户端Socket连接:客户端发送代码如下:for (int i = 0; i < 5; i++...原创 2019-09-11 15:56:10 · 28221 阅读 · 0 评论 -
简单理解TCP/IP传输层协议TCP和UDP
TCP/IP模型中的传输层主要负责端到端通信,和数据链路层类似,数据链路层负责点到点的通信。TCP/IP模型的传输层主要协议有TCP (Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。比如:应用程序A和 B 利用TCP通信:TCP 把A的数据分成多个段,把段传送给网络层,网络层把数据封装为I...原创 2019-08-13 12:33:46 · 4448 阅读 · 0 评论 -
windows下frp socket内网穿透体验
步骤1:下载windows平台下的frp程序:https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_windows_amd64.ziphttps://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_windows_amd64.zip步骤2:在阿里云服务器上,启动frp服务器端:解压步骤1的frp程序,找到frps.ini配置文件[..原创 2021-12-13 12:42:18 · 1383 阅读 · 0 评论 -
C# Socket 长连接设置Keepalive
首先TCP 底层自带KeepAlive 连接监测机制,通常在指定时间:keepalivetime(毫秒)内没有数据交互,则按keepaliveinterval(毫秒)设定重复发送keep-alive包,并且重复次数达到设置值或系统默认值,例如win10系统为10次,如果都没有回应,则视为客户端异常或网络中断,表现为TCP底层发送Reset 指令,连接断开。实验如下:首先更改开启KeepAl...原创 2019-07-09 16:53:13 · 15246 阅读 · 3 评论 -
EF6 批量更新删除数据
首先看改进前的版本以批量更新为例:[Obsolete] public void DeleteRoleUser2(string roleId) { IRepository<UserEntity> userRepo = RepositoryFactory<UserEntity>.Create(); ...原创 2018-11-03 12:25:28 · 10311 阅读 · 1 评论 -
未找到具有固定名称System.Data.SqlClient的ADO.NET提供程序
出现这个问题的原因是因为未添加Entity Framework 的引用或缺失配置文件;1:添加EntityFramework.SqlServer.dll引用;2:web.config里添加EF相关配置: <configSections> <!-- For more information on Entity Framework configuration,...原创 2018-10-17 15:53:17 · 6710 阅读 · 0 评论 -
EF CodeFirst 必须要解决的问题
Entity Framework有三种模式:Model First、DB First和 CodeFirst,这里只谈CodeFirst。实际项目中如果采用了CodeFirst,那么必定会碰见下面这些问题:而且必须解决,否则开发及项目迭代过程中必定会有各类的困惑,以至于放弃使用EF CodeFirst。以本人对EF CodeFirst 的学习过程,这些问题有:问题1:数据库的表和模型(Mod...原创 2018-10-21 14:05:07 · 15602 阅读 · 1 评论 -
未能从程序集EntityFramework 中加载类型System.Data.Entity.Core.Mapping.EntityContainerMapping
程序一直运行好好的,突然有天报错:未能从程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.Data.Entity.Core.Mapping.EntityContainerMapping”。”百度这个信息没有找到有价值的帮助,自己检查了好多遍,...原创 2018-12-21 12:37:09 · 1572 阅读 · 0 评论 -
尝试还原下列封装时发生错误:找不到2.1.4版的封装BinaryFormatter
VS2017 在执行NuGet还原操作时,反复报错:“尝试还原下列封装时发生错误:找不到2.1.4版的封装BinaryFormatter”。解决方法:如下图所示:点击小齿轮弹出选项窗体,在可用套件来源中点击添加包的来源为nuget.org即可。...原创 2019-04-07 20:12:36 · 489 阅读 · 0 评论 -
Redis 安装及设置主从配置
目标是为了设置Redis的Master-slave主从配置,从安装部署到主从配置完成,折腾了一个下午的时光,终于成功了。好记忆不如烂笔头,算是给自己一个回看阅读的机会。把自己一步一步解决问题的过程记录下来,也是一个复习总结的过程,给碰见同样问题的大家一个参考文章!本人试验的Redis安装分window和Linux(CentOS)版本:1:window 版本Redis安装:到http...原创 2018-08-11 22:42:52 · 288 阅读 · 0 评论 -
WPF ContentControl绑定父元素的DataContext
在一个涉及用户权限显示不同的布局需求中,使用了ContentControl的ContentTemplate,发现DataTemplate中按钮的绑定事件失效,原因是ContentControl的DataContext已经和父元素的DataContext断开,需要手动绑定一下: Xaml 写法如下:<ContentControl ContentTemplate="{StaticResource fu原创 2017-12-15 17:31:53 · 5157 阅读 · 0 评论 -
WPF TreeView Material Design 数据双向绑定
利用Prism 搭建的一个WPF MVVM框架,导入了Material Design UI库,在实现TreeView时费了点周折,记录于此。Xaml的写法如下:需要应用命名空间:xmlns:domain="clr-namespace:management.wpfUI.Models" xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:i="clr-...原创 2020-09-03 17:26:45 · 1293 阅读 · 0 评论 -
WPF MaterailDesign TreeView节点默认全部展开
加载TreeView后默认节点全部折叠;<TreeView x:Name="treeView" Grid.Row="0" Foreground="White" ItemsSource="{Binding NavMenus}" MinWidth="220"> <TreeView.Resources> <HierarchicalDataTemplate DataType="{x:Type domain.原创 2020-09-04 11:01:27 · 1297 阅读 · 0 评论 -
WPF Toast 弹窗影响全局快捷键的修复
在一次需求中,需要使用到Ctrl+ Ctrl - 组合快捷键来缩放画布。这个效果借助WPF 的命令绑定很容易实现,代码如下:Window.GetWindow(this.View).InputBindings.AddRange(CreateInputBinding());internal System.Windows.Input.InputBinding[] CreateInputBinding()...原创 2018-07-07 08:19:08 · 751 阅读 · 0 评论 -
WPF 视频开发所谓的空域问题解决
步骤一:到下面的连接中下载源码:https://archive.codeplex.com/?p=microsoftdwayneneed根据自己项目所用的.net framework版本编译对应版本的dll,得到下面2个dllMicrosoft.DwayneNeed.dllMicrosoft.DwayneNeed.Win32.dll在项目中添加引用,引入命名空间: xml...原创 2018-08-21 21:04:27 · 3235 阅读 · 3 评论 -
WPF ScrollViewer 滚动条鼠标移入移出及鼠标按下拖动时的外观样式
在WPF 中自定义ScrollViewer的样式实现的效果如下图所示:主要是鼠标移入显示滚动条,移出鼠标滚动条消失,按住拖拽改变滚动条外观颜色等; 关键点几个点是:1:在ScrollViewer 的自定义模板中 定义好如下几个事件触发器: 用于滚动条滚动时的触发显示; 用于响应鼠标移入时显示滚动条 用于响应鼠标移出时滚动条消失2:当按住滚动滑块时,滑块的外观颜色变化: Scrol原创 2017-10-19 16:16:51 · 4584 阅读 · 2 评论 -
WPF 自定义控件编写例子
WPF 中要写一个自己的控件,可以选择“用户控件”(派生自UserControl)或“自定义控件”(派生自Control类或其子类)。用户控件就像创建一个窗体或页面一样,有一个XAML文件和对应的.cs隐藏文件。如果是添加自定义控件,会看到一个.cs 文件和 themes\generic.xaml。这里写一个小例子,说明下WPF自定义控件的开发过程。...原创 2021-08-25 09:41:14 · 1103 阅读 · 0 评论 -
WPF TemplateBinding与Binding区别及自定义ImageButton
TemplateBinding与Binding区别在于1:TemplateBinding只是单方向的数据绑定2:TemplateBinding不会自动转换数据类型这里用一个自定义ImageButton验证下第2条: public class ImageButton : Button { public BitmapSource NormalImage ...原创 2018-08-20 14:45:55 · 5452 阅读 · 0 评论 -
WPF自定义字体
步骤1:在项目中添加自定义字体文件:设置字体文件属性为:Resource :步骤2:在App.xmal中或者其他合适的地方引入资源: <Application.Resources> <ResourceDictionary> <FontFamily x:Key="HgFont">Resource/Font/#方正兰亭黑简体</FontFamily> ..原创 2021-08-25 10:28:53 · 2957 阅读 · 0 评论 -
利用WPF InkCanvas水墨控件圈选移动笔画
项目的开发需要,用到了WPF原生提供的InkCanvas控件,也有叫水墨控件。 需要开发的功能为鼠标光标随意圈选笔画,选中完成后移动圈选的笔画到画布其他地方。功能实现的效果如下所示:本文只讲解实现的核心代码:1:类似Photoshop的 Lasso工具的效果如何实现?(锦上添花的UI效果:photoshop里圈选后的线框专业说法叫蚁行线,如果能做到动画更完美了)2:套选工具选择...原创 2018-07-26 17:58:10 · 6480 阅读 · 1 评论 -
WPF 中Command绑定及InvalidateRequerySuggested使用注意点
在WPF开发中,按钮的点击和不可点击常用命令绑定来自动完成。例如下面的示例:xmal代码: 后台窗体Load 事件中绑定命令代码:bool isUndo=true; CommandBinding cmdBinding = new CommandBinding(ApplicationCommands.Undo, (s1, exeArgs) =>原创 2017-10-13 14:23:34 · 1646 阅读 · 0 评论 -
WPF GridLength折叠动画+ GridSplitter 拖拽布局
如下图所示一个布局:点击向左按钮,折叠树形导航菜单面板,拖拽左右分割滑块(WPF里叫GridSplitter)可以调整区域分割宽度.界面样式选用了Materail DesginUI ,十分好用,外观漂亮,开发常规需求,足够使用了。Xmal中的布局,其中有一列"menuLeft" 双向绑定了ViewModel里的MenuWidth属性, GridSplitter左右拖拽时动态改变了MenuWidth属性值;<Grid Grid.Row="2"> &原创 2020-09-16 11:29:06 · 3396 阅读 · 2 评论 -
WPF DataGridTextColumn显示隐藏Binding
先定义一个数据代理: public class BindingProxy : Freezable { protected override Freezable CreateInstanceCore() => new BindingProxy(); public object Data { get => GetValue(DataProperty); set => SetVal.原创 2020-12-17 17:01:19 · 2245 阅读 · 0 评论 -
WPF 鼠标滚轮对图片的缩放
一次开发过程中遇到一个需求,需要以鼠标为中心点,利用鼠标滚轮对图片进行缩放。网上的资源还是很多的: 参考了如下一篇文档的缩放算法:尊重作者原创,附原文地址: https://www.cnblogs.com/kongxianghai/archive/2012/06/26/2562966.html 给这篇blog点赞,实现的效果不错! private void Window_Mous原创 2017-12-17 18:38:39 · 4819 阅读 · 1 评论 -
VS2019 项目模板制作
前期制作了一个winform 程序平台,它提供了一些常用的接口或功能接口,开发人员只需要开发dll,放在平台的根目录就可以运行调试。我希望给开发人员一个项目模板,利用它就可以快速新建工程,这个工程里自动引入所需要的dll.这些dll有些是.NET提供的,有些是自己开发的。最重要的是:我想让这个类库编译后自动把生成的dll转移的平台winform程序下,并且让这个dll的启动项目为平台的exe程序。...原创 2020-02-22 14:43:12 · 3313 阅读 · 0 评论 -
VS 生成事件copy已退出,代码为1
在项目属性中的“生成事件”->"生成后事件命令行"写入如下dos指令:copy $(TargetPath) D:\share\ZLNF\my.client.dll提示错误命令“copy C:\Program Files\MyTest\Applications\my.client.dll D:\share\ZLNF\my.client.dll”已退出,代码为 1。排除权限问题后,是因为上面的路径太长导致,添加双引号,问题解决:即为:copy "$(TargetPath)" "D:\s..原创 2021-11-29 15:06:11 · 1601 阅读 · 0 评论 -
C# byte数组与16进制字符串相互转化
在网络通信中常利用字节数组(byte[]) 收发数据,是因为计算机中只能识别0/1编码,一个字节Byte 占8 位 bit(0/1编码),非常方便的表达二进制bit流 的传输序列。而网络抓包或收发数据包检测分析时常利用16进制格式显示,因为二进制书写较长,难以记忆,而每4个二进制位对应1个16进制位,两位16进制的数刚好表达一个字节(8位),比较直观。二进制和16进制之间具有对应关系见下表:...原创 2020-01-03 11:26:56 · 48388 阅读 · 1 评论 -
C# Task.Delay替代 Thread.Sleep()
网上有很多讨论 Thread.Sleep()替代写法的文章,这里翻阅了《C#本质论》找了如下文字:一个可替代写法如下 public static void Sleep(int miniSeconds) { Task.Delay(miniSeconds).Wait(); }或者如下面的代码:var sw = new Stopwatch();sw.Start();Task delay = Task.Delay(5000);C原创 2020-05-08 21:38:34 · 5727 阅读 · 0 评论 -
Could not load file or assembly log4net, Version=1.2.13.0
System.IO.FileLoadException: Could not load file or assembly 'log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Except原创 2020-06-20 19:46:11 · 1860 阅读 · 0 评论 -
C# Socket BeginReceive方法中参数byte[] buffer 的理解
TcpClient tcpClient;byte[] byteBuffer= new byte[1024*4];tcpClient.Client.BeginReceive(byteBuffer, 0, byteBuffer.Length, SocketFlags.None, ReceiveCallBack, null); // 参数: // buffer:...原创 2019-04-09 22:50:26 · 9022 阅读 · 3 评论 -
WPF 按钮绑定TextBox的 Validation.HasError
先看下实现界面效果:实现的效果主要有:1:输入用户姓名验证不通过(/^[\u4e00-\u9fa5\w]{3,16}$/),文本框边框显示红色,鼠标悬浮有ToolTip提示错误信息;2:当输入验证不通过时,保存按钮不可使用;这里实现步骤如下:1:定义带清除按钮的文本框;<ControlTemplate x:Key="ErrorTemplate"> <Doc...原创 2018-05-28 17:42:48 · 5765 阅读 · 1 评论 -
C# 版本和.NET 版本以及VS版本的对应关系
https://en.wikipedia.org/wiki/C_Sharp_(programming_language)#Versionshttps://en.wikipedia.org/wiki/C_Sharp_(programming_language)#Versionshese are the versions of C# known about at the time of thi...转载 2018-08-08 15:27:01 · 15147 阅读 · 1 评论 -
C# base64URL编码
C#中有对应的Base64处理函数:例如把byte[] 转成base64字符串Convert.ToBase64Stringbase64是用64个字符来表示任意二进制数据的方法,它对二进制数据进行处理,它把每6bit前缀补0转成8bit后,再查base64字符表得到转化后的结果。base64编码所用的64个字符为:A-Za-z0-9+/base64URL编码基于base64编码,把字符+和/分别变成-和_。同理:还有base58, base58去掉了0(数字0)、O (大写字母O)、I (大.原创 2021-07-27 09:41:46 · 2477 阅读 · 1 评论 -
App.config 中assemblyBinding引用路径设置
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="myLibs;myLibs\Newtonsoft.Json;" /> </assemblyBinding> </runtime>使用上面的配置可以把项目中第三方的dll引用,分门别类放在某个文件夹中,程序...原创 2021-11-29 15:18:13 · 1228 阅读 · 0 评论