C#
woflyoycm
这个作者很懒,什么都没留下…
展开
-
Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: 系统找不到指定的文件
.net6的WebApi项目 RSA相关代码部署到IIS上报错原创 2023-07-02 19:49:06 · 766 阅读 · 0 评论 -
Windows Server 2012 R2 部署.net6网站
Windows Server 2012 R2 部署.net6网站原创 2023-04-24 10:22:51 · 1959 阅读 · 0 评论 -
.net 6 引入EFCore
.net6 使用EFCore这里默认使用sql server数据库 DBFirst。原创 2023-02-21 16:56:35 · 795 阅读 · 0 评论 -
找到了多个具有相同相对路径的发布输出文件
VS2022发布项目controller时报错。原创 2023-02-19 11:21:02 · 565 阅读 · 0 评论 -
IIS部署Signalr项目前端提示404
检查发现是因为没有启用IIS的websocket协议导致的,启用该协议即可。原创 2023-02-19 10:53:29 · 349 阅读 · 0 评论 -
.net6 webapi简单使用Hangfire完成fire and forget任务
Hangfire将这些任务作为一个队列,队列的信息本项目使用SQLServer来存储(Hangfire也提供其他存储方式,例如Redis)完成业务逻辑后,发送通知可以通过fire and forget方法来执行。.net6 webapi项目,发送通知等代码一般不需要在业务逻辑中执行。首先安装如下3个包(版本号1.7.33)然后在Program.cs中加入如下配置。然后在业务逻辑处加入如下代码即可。这里使用Hangfire来完成。原创 2023-02-03 21:25:30 · 615 阅读 · 0 评论 -
.net6 webapi项目使用quartz
.net6 webapi项目使用quartz做定时任务 引用的包和配置文件原创 2023-02-03 21:14:19 · 1359 阅读 · 0 评论 -
vue3项目使用signalr(长链接/服务端推送到客户端)
vue3 signalr 长链接 服务端推送消息到客户端原创 2023-01-31 16:15:05 · 5011 阅读 · 0 评论 -
C# 循环读取目录下多个文件(json字符串)
目标:读取某个目录下的所有文件,然后将文件内容(json字符串)转为成对象数组1. 创建目录对象,获取目录下所有文件对象主要是使用DirectoryInfo类,和他的GetFiles方法GetFiles方法会获取一个FileInfo[]文件数组DirectoryInfo directoryInfo = new DirectoryInfo(@"D:\test");var fileInfos = directoryInfo.GetFiles();2.读取文件内容(json字符串),转.原创 2021-08-20 10:44:11 · 1231 阅读 · 0 评论 -
C# WebApi跨域
针对.net framework4.7 WebApi类型的项目1. Nuget安装Microsoft.AspNet.WebApi.Cors项目引用 => 右键 => 管理Nuget程序包搜索包名称选择包,点击安装2. 全局配置跨域在WebApiConfig.cs中加入代码config.EnableCors("*","*","*");3. 指定接口允许跨域...原创 2021-07-20 11:34:58 · 1012 阅读 · 1 评论 -
长视频文件的上传与播放 vue3 asp.net video.js
长视频文件的上传与播放概述前端:vue3 video.js7.11.8后端:C# webapi部署平台:前端nginx1.20 后端IIS7工具:FFMpeg需求:管理员会上传时长较长的视频文件(1h),用户在客户端查看视频。m3u8是HLS协议的部分内容,前端分片上传后端分片接收后端组装文件后端FFMpeg将mp4格式转化为m3u8格式配置IIS支持m3u8与ts格式如果没有下列各式支持,请添加扩展名:.ts Mine类型:video/vnd.dlna.原创 2021-05-17 16:58:02 · 1455 阅读 · 3 评论 -
winform中浏览网页 WebBrowser
winform中浏览网页需要使用的组件是WebBrowser官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.webbrowser?view=netframework-4.0以下指示是简单的使用,引入WebBrowser控件首先在设计页面,拖动一个WebBrower组件到当前Form中命名为webTest我们在Form上注意加上注解:[System.Runtime.InteropServices.Com原创 2021-03-10 16:55:38 · 1682 阅读 · 0 评论 -
asp.net MVC项目 在web.config里面配置rewrite
<system.webServer> <rewrite> <!--移动端直接跳转到移动h5页面--> <rules> <rule name="userAgentsRewrite" stopProcessing="true"> <match url="^Factory$" /> <conditions logicalGrouping="MatchAll"> .原创 2021-03-05 16:10:07 · 611 阅读 · 0 评论 -
winform安装、启动、停止、卸载windows服务!
运行环境: .net framework 4业务需求:在winfrom程序中,控制已经开发好的windows服务(安装、启动、停止、卸载)开发环境:vs2019这里我们建立一个解决方案,包含一个windows service项目(windows服务!)和一个winform项目(用来控制windows服务!)。其中winform加入了对service项目的引用,方便控制service。目录1、winform程序添加权限2、为windows service项目配置安装类3、在wi原创 2021-01-29 09:55:01 · 1573 阅读 · 2 评论 -
asp.net webapi 获取当前域名(整个地址)
Request.RequestUri.AbsoluteUri上述代码将获取接口的完成路径例如:http://www.test.com/testProject/api/User/Add原创 2021-01-18 14:02:24 · 2360 阅读 · 1 评论 -
C# 关键字 this default sealed partial
this关键字用来扩展方法default关键字获取缺省值原创 2021-01-06 01:13:56 · 215 阅读 · 0 评论 -
hashset去重简单应用
public static void Main(string[] args) { List<TestObj> list1 = new List<TestObj>() { new TestObj{ID=1,Name="test1"}, new TestObj{ID=1,Name="test1"}, new TestObj{ID.原创 2021-01-05 19:23:38 · 126 阅读 · 0 评论 -
asp.net事务隔离级别
asp.net里面的事务隔离级别如下 1、ReadUncommitted 表示:未提交读。当事务A更新某条数据的时候,不容许其他事务来更新该数据,但可以进行读取操作 2、ReadCommitted 表示:提交读。当事务A更新数据时,不容许其他事务进行任何的操作包括读取,但事务A读取时,其他事务可以进行读取、更新 3、RepeatableRead 表示:重复读。当事务A更新数据时,不容许其他事务进行任何的操作,但是当事务A进行读取的时候,其他事务只能读取,不能更原创 2021-01-05 10:26:24 · 293 阅读 · 0 评论 -
FirstOrDefault方法疑问
testList是一个引用类型的ListtestList.Where(******).FirstOrDefault().TestID绝大多数情况下,当testList.Where(******)没有筛选出任何数据的时候,testList.Where(**).FirstOrDefault()将得到null,于是会报错(因为取null的TestID属性是不对的)但是在使用EF框架的时候,这样写_db.Users.Where(x=>x.testList.Where(******).FirstOr原创 2021-01-04 16:50:12 · 1086 阅读 · 0 评论 -
winform学习笔记 datagridview
DataGridView根据数据更改DataGridView数据样式在列表加载数据后,希望根据数据修改列表一行的样式,这时候更改样式的方法应该绑定的是DataGridView的RowPostPaint 事件!DataGridView一行右键删除winform工具箱有一个ContextMenuStrip这个组件是专门用来做右键菜单的!拖到页面上之后,键入“删除”,就相当于添加了右键删除,这是一个ToolStripMenuItem我们将删除的业务逻辑方法和ToolSt..原创 2020-12-29 20:31:05 · 159 阅读 · 0 评论 -
tryParse 检测入参是否是数字
C#里面有一个TryParse方法非常方便,这里用int.TryParse来做示例既可以用来判断输入字符串能否转化成指定的数据类型, 又可以同时将转化的结果用out类型参数进行输出 string testStr1 = "1"; string testStr2 = "str2"; int testInt1; bool reuslt1 = int.TryParse(testStr1, out testIn原创 2020-12-26 08:45:30 · 235 阅读 · 0 评论 -
asp.net DES加解密
对称加密DES,用来加解密。(MD5非对称加密无法解密,一般用来加密密码,登录时加密对比字符串)/// <summary> /// 对称DES加密解密 /// </summary> public class DESEncrypt { //自定义口令 private static string key = "trump666"; /// <summary> /// 对.转载 2020-12-21 23:34:30 · 242 阅读 · 0 评论 -
asp.net 读取和修改xml文件
xml文件如下<?xml version="1.0" encoding="UTF-8"?><user><username>tony</username><password>123456</password></user>读取xml代码如下XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load("D:\\user.xml");string userna.原创 2020-12-21 20:05:46 · 224 阅读 · 0 评论 -
C# quartz.net 定时任务(三)
文章目录Scheduler其他quartz和timer的区别web环境下IIS搞事情Schedulerquartz想要运行,需要先配置好TreadPool,JobStore,DataSource,SchedulerTreadPool的默认实现DefaultThreadPool可以配置最大并发数等属性,也说明quartz的定时任务都是在后台执行的。JobStore和DataSource上一节说过了,一般使用默认值不用配置。Scheduler需要最后配置,生成实例并关联JobStore和Thread原创 2020-12-21 10:03:37 · 745 阅读 · 0 评论 -
C# quartz.net 定时任务(二)
目录Trigger属性SimpleTriggerCronTriggerTrigger、Job、Schedule ListinersJobStoreRAMJobStoreADO.NET Job Store(AdoJobStore)Trigger属性所有Trigger都实现ITrigger,看下ITrigger就能知道Trigger的基本属性TriggerKey 最开始的示例代码有,是Trigger的IdentityJobDataMa...原创 2020-12-21 01:00:41 · 805 阅读 · 0 评论 -
C# quartz.net 定时任务(一)
quartz是Java里面非常普遍的定时任务框架,asp.net里面对应的是quartz.net,官网:https://www.quartz-scheduler.net/quick-start:https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html安装nuget控制台install-package quartz主要成员SchedulerTriggerJob...原创 2020-12-18 00:42:46 · 2549 阅读 · 1 评论 -
winform学习笔记
带确定和取消的提示框if(MessageBox.Show("this is content", "title", MessageBoxButtons.OKCancel) == DialogResult.OK) { Debug.WriteLine("yes"); } else { Debug.WriteLine("no");原创 2020-12-16 18:26:07 · 377 阅读 · 1 评论 -
vs2019 winform 打包exe
一下都是在win10+vs2019环境下,对winform(.net framework)项目的操作1、nuget安装,搜索setup,安装vs installer projects插件,安装很慢问题不大。 安装完成后重启vs应用更新。2、当前解决方案,右键=>新建项目,搜索setup,选择Setup Wizard3、注意输入项目名称,这也是最后生成的exe名称4、中间这一步注意下选主输出,其他都是下一步5、项目新建结束后,对这个项目右键=>生...原创 2020-12-16 15:43:38 · 6386 阅读 · 5 评论 -
C# using语句
using (TestEntities _db = new TestEntities()) { var item = await _db.SysUser.FindAsync(1); Console.WriteLine(item?.Name); }//括号结束 自动释放_db //只有实现了IDisposable接口的类,才可以使用using语句来简化dispose释放语句 ...原创 2020-12-14 22:21:31 · 157 阅读 · 0 评论 -
LINQ full join left outer join union IEquatable
linq方法实现起来比较麻烦,这里用linq语句来实现直接贴代码原创 2020-12-11 00:45:58 · 333 阅读 · 0 评论 -
C#的委托学习笔记
Sys.Delegate类,总体和Java差不多声明方式:public Delegate void TestDelegate(int param);用+=和-=来添加或者移除方法委托用来把调用者和方法解耦原创 2020-12-10 01:05:21 · 119 阅读 · 0 评论 -
C# 常用的ValidationAttribute 子类(数据验证 注解)
虽然MSDN上都有,但是自己写一下加深印象下面的注解都可以在字段上组合使用Required用法示例[Required(ErrorMessage="请填写名称")]如果属性为null,"",或只包含空白字符,会引发异常(ModelState.IsValid会false)RegularExpression用法示例[RegularExpression(pattern:@"^[1-9]\d*$",ErrorMessage ="请选择部门")]上面的示例是正整数检测,其他常用.原创 2020-12-04 13:43:33 · 4979 阅读 · 1 评论 -
C# Attribute 注解
AttributeUsage :在定义自己的属性类的时候,可以用这个注解来控制属性类的使用方式有3个重要入参AttributeTargets ValidOn ,bool AllowMultiple,bool InheritedAllowMultiple:是否能多次指定该属性Inherited:能否被继承AttributeTargetsC#里面这个枚举值用来存储Attribute可以修饰的对象,是一个有Flags注解的枚举值,意思是可以用AttributeTargets....原创 2020-12-03 15:32:42 · 1600 阅读 · 1 评论 -
C# JSON 序列化
C# JSON 序列化using System.Web.Script.Serialization; int id = 1; string name = "test"; //json工具类 JavaScriptSerializer ser = new JavaScriptSerializer(); //序列化 对象转json字符串 var obj =new User原创 2020-12-03 11:55:13 · 1556 阅读 · 1 评论 -
C# 线程 异步
C#异步编程Join()join方法可以让当前线程等待join线程执行结束后再继续,例如:A线程中,调用B线程的join方法,那么直到B线程执行完毕,才会执行A线程join还有一个传参timespan的方法Sleep()强制当前线程休眠,静态方法,传参可以是毫秒也可以是timespanThread.Sleep(2000);//当前进程休眠2秒Thread.Sleep(0)会立马放弃当前时间片,执行交给其他线程类似YieldThread.Yield()线程放...原创 2020-12-03 00:01:50 · 424 阅读 · 0 评论 -
EF 多对多关系 中间表操作
EF多对多关系中间表简单操作业务场景新增中间表修改中间表业务场景业务中碰到两个表是多对多关系示例:实际数据库中是表Users(用户表)和表Rooms(办公室),和中间表UserRooms(用户的办公室通行权限)EF中已经有Users用户表和Rooms办公室表的映射,但是UserRooms是没有实体映射的。Users:主键UserId 姓名UserNameRooms:主键RoomId 房间号RoomNOUserRooms:UserId RoomId...原创 2020-12-02 16:02:21 · 1265 阅读 · 0 评论 -
LINQ Except简单用法
LINQ Except直接贴代码int[] arr1=new int[]{1,2,3};int[] arr2=new int[]{3,4,5,6};int[] arr3=arr1.Except(arr2).ToArray();Debug.WriteLine(string.Join(",", arr3));//1,2得到的是arr1中,剔除和arr2重复的项目后,剩下部分组成的新数组上面的数组int[]改成列表List int也可以得到相同的结果但是不能用在引用对象的List上面!!!原创 2020-12-02 15:12:49 · 1131 阅读 · 0 评论 -
InvokeMember C#
InvokeMember是C#中 反射动态调用 对象/类 的方法/字段/属性 时需要用到的方法。通常使用InvokeMember方法时,参数如下:string name 方法/字段的名称BindingFlags invokeAttr 枚举类BindingFlags代表需要动态调用的是哪种方法/字段,枚举值有Static、Public、NonPublic、InvokeMethod、GetField、SetField、GetProperty、SetProperty等多种枚举值(字段是Field,属性原创 2020-11-30 15:13:54 · 1679 阅读 · 0 评论 -
C# ENUM枚举 遍历获取值、名称、注解
先定义一个类来存储数据:public class ItemInfo{ public int ID {get;set;} public string Name {get;set;} public string Description {get;set;}}要获取的枚举如下:public enum MyEnum{ [Description("测试枚举1")] TestEnum=1; [Description("测试枚举2")] TestE原创 2020-11-30 13:44:48 · 5890 阅读 · 0 评论 -
SelectMany简单应用
SelectMany简单应用示例:现有数据库表Person和Dog,人和狗是1对多的关系Person有ID,Name,Gender字段Dog有ID,PersonId(关联Person),Name字段_db.Person.Include(x=>x.Dog).ToList();当我们按上面的方法进行操作,获取的是Person的列表如果仍然要以Person为主体,但是想获取Dog的列表,这时候就用到SelectMany了_db.Person.Include(x=>x.Dog).Se原创 2020-11-26 15:22:29 · 2052 阅读 · 0 评论