.Net
文章平均质量分 67
carcarrot
这个作者很懒,什么都没留下…
展开
-
ASP.NET Core WebAPI中的分析工具MiniProfiler
默认的index.html页面可以从如下链接下载下载之后将这个文件放置到项目根目录下。最后我们需要配置这个index.html文件的Bulid Action为Embedded resource在Startup.cs文件中,我们需要修改中间件的配置,这里我们需要添加一个配置。});注意:这里是项目的命名空间名本篇博客描述了如何使用来监控分析你的Api。除了提供网页显示报告,还支持将报告结果存储在数据库中,后面我会补充一篇文章来说明如何将报告保存到数据库中。原创 2024-09-14 15:59:27 · 821 阅读 · 0 评论 -
Castle DynamicProxy基本用法(AOP)
本文介绍AOP编程的基本概念、Castle DynamicProxy(DP)的基本用法,使用第三方扩展实现对异步(async)的支持,结合Autofac演示如何实现AOP编程。转载 2024-09-12 19:22:11 · 126 阅读 · 1 评论 -
五个id生成器性能比较记录
五个id生成器介绍: YitIdHelper、Ulid、IdGenerator、Guid、Nanoid转载 2024-07-17 18:02:18 · 66 阅读 · 0 评论 -
.Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
ASP.NET Core 支持多个不同的缓存。最简单的缓存基于。表示存储在 Web 服务器内存中的缓存。在服务器场(多个服务器)中运行的应用应确保在使用内存中缓存时会话是粘滞的。粘滞会话可确保来自客户端的请求都转到同一服务器。例如,Azure Web 应用使用(ARR) 将所有请求路由到同一服务器。Web 场中的非粘滞会话需要(如 Redis)来避免缓存一致性问题。原创 2024-07-17 17:21:27 · 1248 阅读 · 0 评论 -
.Net实现SCrypt Hash加密
方案1 (加密后存储“算法设置”、“盐(随机值)”、“Hash值”,以“$”分隔)://Nuget引入SCrypt.NET库//该库的SCrypt加密会得到包含“算法设置、盐(是个随机数)、Hash”一起的值,并以“$”分隔//由于每次盐是随机产生的,所以每次对同一明文加密得到的值并不相同,//但由于加密后的信息存储了算法设置及盐信息,所以Compare方法中可以利用这些信息再次对明文进行运算而得到相同的Hash值进行匹配。原创 2024-06-07 11:16:03 · 709 阅读 · 0 评论 -
程序中为数据库uniqueidentifier类型字段【TSQL中用newid()赋值或以newsequentialid ()为Default值】生成有序的GUID
uniqueidentifier 为 16 字节时,其数据类型比其他数据类型(例如 4 字节的整数)大。这意味着使用 uniqueidentifier 键生成索引的速度相对慢于使用 int 键生成索引的速度。uniqueidentifier 数据类型可存储 16 字节的二进制值,其作用与全局唯一标识符 (GUID) 一样。世界上的任何两台计算机都不会生成重复的 GUID 值。注意:NEWSEQUENTIALID()只能在创建或修改表时定义为默认值时有效(该函数能在数据库层面默认生成有序的GUID值)原创 2024-04-28 11:54:26 · 485 阅读 · 0 评论 -
分组联接(查询表达式语法“join ... into varGroup子句” 或 Linq方法“Enumerable.GroupJoin”)实现Left Join查询操作
C#中 ,查询表达式的联接操作1. 查询表达式语法join(不带into)对应 Linq的join方法【可实现与关系型数据库的inner join等价的操作】2. 查询表达式语法join ... into varGroup对应 Linq的GroupJoin方法【分组联接,既能实现等价于数据库inner join的操作,也可结合varGroup.DefaultIfEmpty方法实现与Left Join等价的操作】原创 2024-04-24 12:18:12 · 875 阅读 · 0 评论 -
基于Token的WEB后台认证机制
转载自: https://www.cnblogs.com/xiekeli/p/5607107.html HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。因此,在开发对外开放的RESTful API时,尽量避免采用HTTP Basic AuthOAuth(开放授权)是一个转载 2024-04-19 20:55:13 · 51 阅读 · 0 评论 -
程序中调用DB存储过程记得异常处理时尝试回滚可能存在的事务
有些存储过程需要执行比较久,在数据库中直接跑本身没有出错,但从程序中调用该存储过程会由于超时进入程序异常处理,这时数据库后台依然在跑着该存储过程,如果该存储过程中有启用事务,那么对于程序中的该连接中这时已经存在着未提交未回滚的事务(尽管事务是在DB存储过程中启动的),如果不通过该连接回滚释放,不仅会无端继续占用着连接会话资源(此时dispose连接并不能有效释放),而且重新运行调用该存储过程的程序会马上由于不能启动事务而出错。原创 2024-04-17 16:41:32 · 258 阅读 · 0 评论 -
浅述.Net中的Hash算法(顺带对称、非对称算法)
对称加密算法(只有一个私钥,比如DES、AES);非对称加密算法(公钥与私钥,比如RSA);Hash算法(任意长度的输入都转换为固定长度的“哈希值”字符串比如MD5、SHA-1、SHA-256、SHA-384、SHA-512)原创 2024-04-10 14:03:32 · 660 阅读 · 0 评论 -
无需创建 Controller Action 直接返回View (个人不建议采用)
Controller 类包含一个HandleUnknownAction()方法,它在你试图去调用一个不存在的action 时被执行。如果每个Action只是包含“return View()”,那么可以利用该方法简化代码量,用它来呈现View。(当然如果不加以限制配合文件遍历漏洞会是个安全问题,个人不建议简单基于不写Action的目的而采用)演示如何不写controller 方法,而直接返回View。以下是不写controller 方法,而直接返回View的代码(个人不太建议的方案)题外篇:如何模拟框架。原创 2023-12-26 11:02:02 · 456 阅读 · 0 评论 -
Response Header中不暴露Server(IIS)版本、ASP.NET及相关版本等信息
ASP MVC开发的Web默认情况下会在请求的回应中暴露等相关服务端信息,公开这些敏感信息会存在一定的安全风险。标头用于被IIS / IIS Express中某些调试模块理解,它包含到磁盘上源文件的base64编码路径,并用于将页面生成的输出链接回该源文件,只在本机请求下生成,应用程序部署到实际服务器时,并不会出现,无需担心!原创 2023-10-27 11:04:06 · 1539 阅读 · 0 评论 -
用SharpZipLib实现整个目录压缩(i.e: 在压缩文件中生成存放目录)【从.Net4.5开始用自带的ZipFile.CreateFromDirectory即可轻松实现】
从.Net 4.5开始的项目中,我们可以在引入 System.IO.Compression 和 System.IO.Compression.FileSystem (使用静态类ZipFile必需引入) 程序集的情况用以下静态方法很容易实现对整个目录的压缩:ZipFile.CreateFromDirectory //注意需引入System.IO.Compression.FileSystem程序集。原创 2023-10-18 20:17:31 · 702 阅读 · 0 评论 -
.Net MVC 使用Areas后存在相同Controller时报错的解决办法; 从上下文获取请求的Area名及Controller名
先来说个额外的问题:如何在请求上下文(比如过滤器的中)获取请求对应的Area和Controller 名字?此处不通过DataTokens来获取,是因为当请求不是走Areas中的路由时,DataTokens中是不包含Key为“Controller”的键和值的。如果该请求不是对应Areas中的响应则DataTokens中不包含Key为“area”的键和值,则此处得到null。问题原因:使用Areas后存在多个相同的Controller,路由注册未分开。原创 2023-09-12 20:29:13 · 825 阅读 · 0 评论 -
一文看懂:ASP.NET Core依赖注入作用域和对象释放
上一小节中有一个例子中说到,当注入的生命周期为Scoped的时,在同一个请求内,注入的对象都是同一个,这里Asp.NetCore将每个请求作为了一个作用域,在此作用域内,生命周期为Scoped的对象就是同一个;细心的小伙伴可能会看到,每个实现类里面都继承了IDisposable接口,这主要是后面显示释放用的,这里先不管;使用坑:不要从根容器中获取Transient生命周期的对象,因为通过根容器创建的对象不会回收,除非等到应用程序退出,这样会导致内存泄露;对于Scoped来说只要在自己的作用域内就是单例的;转载 2023-04-07 12:36:16 · 527 阅读 · 0 评论 -
Entity Framework Core 使用HiLo生成主键
Entity Framework Core 使用HiLo生成主键:https://news.qq.com/rain/a/20211231a01ck100原创 2023-03-02 20:45:50 · 116 阅读 · 0 评论 -
.NET中使用Partitioner类的场景
原创 2023-03-01 19:44:41 · 111 阅读 · 0 评论 -
项目中查看Unit Test覆盖率的库
.Net项目中通过Nuget引入package: coverlet.msbuild和Microsoft.NET.Test.SdkJava项目中引入: JaCoCo library原创 2022-12-22 20:21:36 · 169 阅读 · 0 评论 -
C#获取泛型构造类型GetGenericTypeDefinition(),通过泛型构造类型定义泛型MakeGenericType(params Type[] typeArguments)
C#获取泛型构造类型:GetGenericTypeDefinition()比如:typeof(Dictionary<string,int>).GetGenericTypeDefinition() == typeof(Dictionary<,>)通过泛型构造类型定义泛型: MakeGenericType(params Type[] typeArguments)比如:typeof(Dictionary<,>).MakeGenericType(typeof(s原创 2022-11-30 18:51:25 · 1705 阅读 · 0 评论 -
How to apply JsonExtensionData Attribute
https://stackoverflow.com/questions/52792214/how-to-apply-jsonextensiondata-dictionarystring-jtoken-to-another-object-wi或许可再看看 https://dotnetfiddle.net/mhU6ME原创 2022-11-22 02:28:07 · 137 阅读 · 0 评论 -
customErrors及httpErrors配置
先看正确配置例子:customErrors和httpErrors的区别:Https//blog.csdn.net/a497785609/article/details/78949729原创 2022-10-20 23:00:57 · 189 阅读 · 0 评论 -
Web集成Windows身份验证(NTLM、Kerberos、Basic)验证过程详解
原文标题:《IE接受Negotiate头,分别使用NTLM 或 Kerberos两种验证的情况说明》https://www.iteye.com/blog/cainiao-wuzhiqi-1565824转载 2022-04-12 17:56:52 · 721 阅读 · 0 评论 -
实现Ajax或Submit Form提交的将数据导出下载成csv文件,以及H5的button标签小坑
1. Web中实现以Ajax或Submit Form请求下载导出csv文件;2. HTML5的标签注意一定要指明type属性原创 2022-01-14 20:06:32 · 1189 阅读 · 0 评论 -
利用PrincipalContext验证域账号密码是否有效
public bool IsValid(string accountName, string password){string domain = Path.GetDirectoryName(accountName);string userName = Path.GetFileName(accountName);using (var PC = new PrincipalContext(ContextType.Domain, domain)){return PC.ValidateCredential原创 2021-07-26 11:44:17 · 780 阅读 · 0 评论 -
利用IIS的ApplicationRequestRouting(ARR)及URLRewrite组件实现不间断发布
我们部署站点经常需要中断服务,可以利用IIS的ApplicationRequestRouting及URLRewrite组件实现不间断发布。以下内容转载自:《IIS安装和使URL重写工具-URL Rewrite》https://blog.csdn.net/suxuelian/article/details/80103514下载和安装URL RewriteIIS8默认是没有安装URL重写工具的,必须要自己下载安装。如果IIS上默认有安装Web平台安装程序,我们可以使用平台自动安装URL转载 2021-08-18 00:05:04 · 1322 阅读 · 0 评论 -
Https未能创建 SSL/TLS 安全通道。Could not create SSL/TLS secure channel解决方案
描述:请求被中止: 未能创建 SSL/TLS 安全通道。Could not create SSL/TLS secure channel。 产生平台:Windows Server 2012,Windows 7 Service Pack 1(SP1)和Windows Server 2008 R2 SP1转载自:https://www.xftsoft.com/news/jiaocheng/Could-not-create-SSL-TLS-secure-channel.html解决办法一:在HttpWebR转载 2021-07-30 17:39:05 · 16532 阅读 · 0 评论 -
重温什么是CSRF?及js中相应的使用
转自https://blog.csdn.net/sunstar8921/article/details/81974071 《[ValidateAntiForgeryToken] 的作用及用法》另一个值得注意的典型安全问题还有“跨站脚本攻击XSS”一.CSRF是什么?CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。二.CSRF可以做什么?你这可以这么理解C转载 2021-07-12 19:07:19 · 260 阅读 · 0 评论 -
(略版)Web中运行正常的HttpClient.PostAsync,在Winform中运行却直接挂起无响应——WinForm中需要从UI事件方法开始添加async声明为异步方法避免阻塞UI进程
Web中运行正常的HttpClient.PostAsync,在Winform中运行却直接挂起无响应——WinForm中需要从UI事件方法开始添加async声明为异步方法避免阻塞UI进程原创 2021-04-27 14:57:25 · 808 阅读 · 0 评论 -
利用“3 of 9 barcode”字体实现一维条形码(只支持英文等ASCII字符)
像超市收银使用的一维条形码,其实安装个“3 of 9 barcode”字体就可以轻松实现:以下是网上C#程序中指定字体实现相关信息的一维条形码的简单例子:C# barcode 3 of 9参考:[C#][VB.NET]產生 Barcodehttp://www.dotblogs.com.tw/chou/archive/2010/01/21/13188.aspx-------------------1、下载字体http://www.squaregear.net/fon..原创 2021-01-05 15:46:16 · 4211 阅读 · 0 评论 -
截图保存过的一些知识
导入CSS样式: @import url()DBTS means DB TimeStamp原创 2020-12-04 14:39:42 · 113 阅读 · 0 评论 -
Config配置文件节点配置与类型对象的对应关系
我们在做项目开发的时候有时候可以将一个全局的实例对象以Web.Config中的节点来配置存储,但这里面要注意首字母的大小写转换(类型为Pascal在配置节点中需转换为小驼峰式camelCase命名写法):首先我们看下配置文件中的相关配置:<configuration> ........ <system.net> <mailSettings> <smtp deliveryMethod="Network" from="HUA_eRe.原创 2020-11-26 12:02:08 · 561 阅读 · 0 评论 -
(回顾)MVC3中 ViewBag、ViewData和TempData的使用和区别
在MVC3开始,视图数据可以通过ViewBag属性访问,在MVC2中则是使用ViewData。MVC3中保留了ViewData的使用。ViewBag 是动态类型(dynamic),ViewData 是一个字典型的(Dictionary)。它们的定义如下:public dynamic ViewBag { get; }public ViewDataDictionary ViewData { get; set; }控制器中代码:public ActionResult Index(){..转载 2020-11-25 11:11:38 · 348 阅读 · 0 评论 -
Ajax Post提交参数的值中带有html标签不能提交到后端的解决办法(ASP.NET)
我们在做Web开发的时候,在MVC中当前端通过Ajax提交数据到后端时,当数据的值中带有HTML标签时,可以是出于安全性方面,在后端的Controller的Action方法中是不会接收到这个Ajax请求的。解决方法:可以在前端提交数据时先将带有HTML标签的数据用encodeURI或Base64(比如atob函数)编码,提交后在后端进行HttpUtility.UrlDecode或Base64(比如Convert.FromBase64String函数)解码再处理。Load数据到页面的时候无需处理。.原创 2020-11-13 17:36:39 · 2160 阅读 · 1 评论 -
MVC方法因为参数缺失造成页面访问异常的问题说明
先来简单看下以下在MVC中容易引发的由于少传递Url参数引发的错误提示:传递好id参数后一切正常如果想在不传递id参数时不造成上面页面异常的情况,可以将上例的id参数类型改为 “int?”,或者将id封装在一个类的属性中解决。...原创 2020-11-11 11:36:17 · 458 阅读 · 0 评论 -
.Net实现发送邮件时如何在邮件正文中引入附件的图片
方法非常简单:1.设置附件的ContentId属性为一个自定义名称。2.设置附件的ContentDisposition.Inline属性为true。3.在邮件的HTML格式正文中以“cid:自定义名称”的方式引用,比如ContentId设为“face”,那么正文中就以“cid:face”作为其URL路径字符串的替代即可。原来作者在编写MailMail的时候曾使用过这种方法来使邮件内的链接指向附件,而用作图片显示仅仅是多了一个设为内联附件的步骤。来...原创 2020-10-30 10:38:03 · 892 阅读 · 0 评论 -
将 HTTP 处理程序和模块迁移到 ASP.NET Core 中间件
本文摘自Asp.Net Core的官方文档,是很好的了解HttpModule、HttpHandler、中间件MiddleWare、IOptions的渠道。本文介绍如何将现有的 ASP.NET HTTP 模块和处理程序从 system.webserver迁移到 ASP.NET Core中间件。模块和处理程序被在继续 ASP.NET Core 中间件之前,让我们先回顾一下 HTTP 模块和处理程序的工作原理:处理程序是: 实现IHttpHandler的类 用于处...转载 2020-10-27 17:37:45 · 507 阅读 · 0 评论 -
C#中DataTable与实体类型的快捷互转
我们在做一些CRUD类的项目开发的时候,经常会涉及到DataTable类型与实体类型互转的操作,过去我们也许会通过反射将表填充到实体的方式来实现,但其实我们可以利用json很便捷的实现该转换,主要通过Newtonsoft.Json.Linq.JArray提供的方法进行中转,如下:DataTable=>实体: List<modelT> list_model= JArray.FromObject(dataTable).ToObject<List<modelT>>(原创 2020-10-22 17:25:32 · 1740 阅读 · 1 评论 -
累记C#一些不常用的方法
获取当前方法所在的类名:System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name。是一个线程安全集合类,实现制造者-使用者(生产者-消费者)模式。判断当下运行是不是处于在调试的状态。原创 2020-10-22 10:11:37 · 213 阅读 · 3 评论 -
二进制数据、读写文件流、Base64编码
最近有个项目,是通过Selenium WebDriver驱动Chrome浏览报表生成截图,并把截图文件字节流以Base64编码成字符串写入DB的varchar(max)表字段,先看相关代码段:......var ss = webDriver.GetScreenshot();imgString = ss.AsBase64EncodedString;webDriver.ExecuteScript(string.Format("saveSnapshot('{0}','{1}')", jobId, im原创 2020-10-21 16:59:50 · 2209 阅读 · 0 评论 -
MVC的View页面中如何正确引用文件的绝对路径、Area组织网站
我们做Web开发的时候通常需要引入第三方脚本或样式文件,考虑到我们可能当前使用Area为网站目录分级以及开发完成后部署的站点有可能是个位于虚拟目录的子站点,所以不能简单的用反斜杠“/”做为根目录来作为根目录引用文件,ASP.Net中我们除了可以使用相对路径,也可以在Razor页面中用正确取得根目录使用绝对路径。【~/ 指向当前项目的根目录,只在服务器端使用,客户端不认识】 (按.Net Core官方文档所说,“在 Razor (.cshtml ) 文件中,波浪号斜杠 ( ~/ ) 指向 Web 根目录。原创 2020-10-16 17:25:32 · 1175 阅读 · 0 评论