.Net Core
文章平均质量分 63
csdn_aspnet
这个作者很懒,什么都没留下…
展开
-
.Net Core Policy 基于策略授权
在ASP.NET Core中,重新设计了一种更加灵活的授权方式:基于策略的授权, 它是授权的核心.在使用基于策略的授权时,首先要定义授权策略,而授权策略本质上就是对Claims的一系列断言。基于角色的授权和基于Scheme的授权,只是一种语法上的便捷,最终都会生成授权策略。除了OperationAuthorizationRequirement外,都有对应的快捷添加方法,比如RequireClaim,RequireRole,RequireUserName等。新建类 PermissionHandler。原创 2024-01-30 11:20:18 · 800 阅读 · 0 评论 -
ASP.NET Core 中五种Filter AuthorizationFilter ResourceFilter ExceptionFilter ActionFilter ResultFilter
ASP.NET Core 有以下五种Filter 可以使用:Authorization是五种Filter中优先级最高的,通常用于验证Request合不合法,不合法后面就直接跳过。Resource是第二优先,会在Authorization之后,Model Binding之前执行。通常会是需要对Model加工处理才用。异常处理的Filter。最常使用的Filter,封包进出都会经过它,使用上没什么需要特别注意的。跟Resource Filter很类似,但并不会经过Model Binding。原创 2024-01-29 10:17:18 · 1533 阅读 · 0 评论 -
ASP.NET Core 过滤器 使用依赖项注入
通过创建实现 IActionFilter 或 IAsyncActionFilter 的类,我们可以定义要在 ASP.NET Core 中的操作方法之前和之后执行的自定义逻辑。要创建根据操作执行进行操作的自定义操作过滤器,我们可以创建一个实现 IActionFilter 或 IAsyncActionFilter 接口的类。代码现在更干净、更具可读性。通过控制过滤器的范围,我们可以精确地确定过滤器将在 ASP.NET Core 应用程序中应用的时间和位置,从而允许我们添加特定的行为并有效地控制请求执行过程。原创 2024-01-29 09:44:49 · 1354 阅读 · 0 评论 -
ASP .NET Core Api 使用过滤器
资源过滤器在模型验证和模型绑定请求之前运行,也在我们的请求结果从服务器返回时运行。ActionFilterAttribute 拦截器通过 重写 OnActionExecuting,来 拦截action的请求消息,当执行OnActionExecuting完成以后才真正进入请求的action中,action运行完后又把控制权给了 OnActionExecuted,这个管道机制可以使我们用它来轻松实现 权限认证、日志记录 ,跨域以及很多需要对全局或者部分请求做手脚的的功能。异步ActionFilter。原创 2024-01-28 09:49:02 · 1766 阅读 · 0 评论 -
Asp.Net Core Webapi 配置全局路由 及 示例代码 下载
在开发项目的过程中,我新创建了一个controller,发现vs会给我们直接在controller头添加前缀,比如[Route("api/[controller]")],即在访问接口的时候会变成http://localhost:8000/api/values,但是如果控制器有很多个,或者要进行版本迭代时,我们会发现痛苦的时刻降临了,要一个一个的修改。我们就可以通过 Apply方法中的 ApplicationModel 来修改或者添加一些约定,而且MV框架本身在启动的时候会把此接口注入,以便于我们使用。原创 2024-01-28 09:32:05 · 1005 阅读 · 0 评论 -
Asp.Net Core 获取应用程序相关目录
/拿到 wwwroot 路径。例如:D:\后端项目\testCore\test.WebApi\bin\Debug\net6.0\。例如:D:\后端项目\testCore\test.WebApi\bin\Debug\net6.0\。例如:D:\后端项目\testCore\test.WebApi\wwwroot。例如:D:\后端项目\testCore\test.WebApi\wwwroot。// 使用 appDirectory 进行其他操作。获取了路径:D:\\Project\\MyWebsite\\UI。原创 2024-01-26 10:37:18 · 2059 阅读 · 0 评论 -
System.Drawing.Common.Bitmap 跨平台的替代方案
在这个例子中,我们创建了一个 640x480 的画布,并通过 `SKSurface` 的静态 `Create` 方法创建了一个用于绘图的表面。它是对Google Skia图形库的C#/.NET封装,提供了一套易于使用的API,可以用于创建图像、绘制文本、进行图形变换等操作。最后,我们使用 `surface.Snapshot` 将画布中的内容保存为一个图像,并使用 `image.Encode` 将图像编码为 PNG 格式。我们使用 `SKPaint` 来创建一个画笔,指定了颜色和样式。原创 2024-01-25 11:00:26 · 1325 阅读 · 0 评论 -
ASP.NET Core 中使用 WebSocket 协议进行实时通信
在 ASP.NET Core 中使用 WebSocket 协议创建实时通信的完整示例涉及几个步骤。在此示例中,我们将创建一个简单的聊天应用程序,用户可以在其中实时发送和接收消息。此示例提供了使用 WebSocket 在 ASP.NET Core 中进行实时通信的基础结构。在您的项目中,您需要安装 Microsoft.AspNetCore.WebSockets NuGet 包,它提供 WebSocket 支持。此示例提供了 ASP.NET Core 中 WebSocket 聊天应用程序的基本实现。原创 2024-01-24 09:21:36 · 2278 阅读 · 0 评论 -
.NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
Flurl.Http-3.2.4 升级到 4.0.0 版本后,https请求异常:Call failed. The SSL connection could not be established.Flurl.Http-3.2.4版本绕过https的代码,对于 Flurl.Http-4.0.0 版本来说方法不再适用,3.2.4及4.0.0版本绕过https代码成果在文章最后有展示原创 2024-01-18 10:56:11 · 1463 阅读 · 0 评论 -
.NetCore Flurl.Http 4.0.0 以上管理客户端
这里推荐的方法是IFlurlClientCache向容器注册为单例,绑定到组合根FlurlClientCache并可选地从组合根进行配置,然后注入到您的服务中。因此,在任何一种情况下都可以使用所有相同的流畅、可链接的方法。许多开发人员,尤其是那些想要严格遵守依赖注入原则的开发人员,可能会对管理客户端的全局静态上下文的存在感到厌烦,认为这可能导致更紧密的耦合并使系统更难以测试。在上面的示例中,clients.Get如果尚未创建指定的客户端(在本示例中是在服务注册时),则会引发异常。,这是 的全局单例实例。原创 2024-01-18 10:55:32 · 1332 阅读 · 0 评论 -
各版本 操作系统 对 .NET Framework 与 .NET Core 支持
有两种类型的受支持版本:长期支持 (LTS) 版本和标准期限支持 (STS) 版本。所有版本的质量都是一样的。唯一的区别是支持的时间长短。LTS 版本可获得为期三年的免费支持和补丁。STS 版本可获得 18 个月的免费支持和修补程序。有关详细信息,请参阅。从上图中我们可以看出,.Net5及以下版本已经不再受到官方支持;而.Net7看起来也是过渡版本,支持时间较短,本文从 .Net Core 3.1 开始介绍支持的系统,可能不是很全面,仅供参考。原创 2024-01-08 09:43:20 · 5837 阅读 · 0 评论 -
.NET Standard 支持的 .NET Framework 和 .NET Core
NET Standard 是针对多个 .NET 实现推出的一套正式的 .NET API 规范。推出 .NET Standard 的背后动机是要提高 .NET 生态系统中的一致性。.NET 5 及更高版本采用不同的方法来建立一致性,这种方法在大多数情况下都不需要 .NET Standard。但如果要在 .NET Framework 和其他任何 .NET 实现(例如 .NET Core)之间共享代码,则库必须面向 .NET Standard 2.0。原创 2024-01-05 09:36:16 · 1973 阅读 · 1 评论 -
NetCore Webapi XSRF/CSRF 跨站请求伪造过滤中间件
Token验证:通过在每个请求中包含一个随机生成的令牌,并在服务器端验证该令牌的有效性,可以防止CSRF攻击。在.NET Core中,可以使用`[ValidateAntiForgeryToken]`属性来自动验证令牌,或者使用`IAntiforgery`服务手动验证令牌。如果验证失败,将抛出异常,请求将被终止。SameSite Cookie属性:在设置cookie时,可以通过将`SameSite`属性设置为`Strict`或`Lax`来限制cookie的跨站点行为,从而减少XSRF攻击的可能性。原创 2024-01-04 10:04:31 · 1495 阅读 · 0 评论 -
.NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
在.NET 6中,微软官方建议把 System.Drawing.Common 迁移到 SkiaSharp 库。SkiaSharp是一个基于谷歌的Skia图形库(Skia.org)的用于.NET平台的跨平台2D图形API。总体来说用法和原来的System.Drawing.Common库类似,旧的代码稍微做一些修改就可以了。也可以在canvas上画图片做一些截取图片的操作,可以调用canvas.DrawImage方法。它提供了一个全面的2D API,可以跨移动、服务器和桌面模型来渲染图像。原创 2024-01-02 10:18:42 · 1459 阅读 · 0 评论 -
ASP.NET Core AOT
此外,我们的本机 AOT 部署没有进一步的运行时依赖项- 我们的应用程序在普通的 Alpine 3.18 映像上运行,只需复制并执行二进制文件即可。请注意,当您在 IDE 中使用 dotnet run、dotnet test 或类似功能时,您的应用程序将以常规 CLI 模式运行 - 本机 AOT 仅在您的应用程序发布时才会生效。对于包含 我们的准系统 ASP.NET Core 应用程序的图像来说,大约 18MB 是一个惊人的值,大约是常规 CLR 构建的图像大小的 15%。原创 2024-01-02 10:04:29 · 1249 阅读 · 0 评论 -
.Net Core 防御XSS攻击
网络安全攻击方式有很多种,其中包括XSS攻击、SQL注入攻击、URL篡改等。那么XSS攻击到底是什么?XSS攻击有哪几种类型?XSS攻击又称为跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行。XSS是一种经常出现在Web应用程序中的计算机安全漏洞,是由于Web应用程序对用户的输入过滤不足而产生的,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。常见的XSS攻击有三种:反射型XSS攻击、DOM-based型XSS攻击、存储型XSS攻击。原创 2023-12-29 15:39:52 · 867 阅读 · 0 评论 -
.NetCore NPOI 读取excel内容及单元格内图片
正常处理应该是读取到图片保存成功后,处理datatable图片列的相关地址,如:uploads/xxx/xx.jpg ,返回保存在服务器上的地址,以便前端访问或保存到数据库等,本文并没有处理,有需要的伙伴自行处理吧,希望本文对你有帮助。本文使用的是 NPOI-2.6.2 版本,此版本持.Net4.7.2;由于数据方提供的数据在excel文件中不止有文字内容还包含图片信息,于是编写相关测试代码,读取excel文件内容及图片信息.原创 2023-12-26 11:19:32 · 1287 阅读 · 0 评论 -
.Net7.0 或更高版本 System.Drawing.Common 上传图片跨平台方案
项目升级.Net7.0+以后,System.Drawing.Common开关已经被删除,于是想办法将原来上传图片验证文件名和获取图片扩展名方法替换一下,便开始搜索相关解决方案。原创 2023-12-26 11:04:27 · 1561 阅读 · 2 评论 -
System.Text.Json.JsonSerializer 自定义实现序列化 DataSet、DataTable
System.Text.Json(从 .NET Core 3.1 开始),为了能够序列化这些类型,您需要为JsonConverter您需要的类型实现自己的类型并在JsonSerializerOptions. 为您要求的特定类型编写一个序列化程序应该相当容易。希望本文对你有帮助。原创 2023-12-18 11:11:40 · 382 阅读 · 0 评论 -
JsonException: A possible object cycle was detected which is not supported 检测到可能的对象循环,这是不受支持的
译文:JsonException:检测到可能的对象循环,这是不受支持的。这可能是由于循环,或者如果对象深度大于32的最大允许深度。上图译文:获取或设置序列化或反序列化JSON时允许的最大深度,默认值为0表示最大深度为64。序列化结果一切正常,希望本文对你有帮助。原创 2023-12-18 10:52:33 · 378 阅读 · 0 评论 -
Net6.0或Net7.0项目升级到Net8.0 并 消除.Net8中SqlSugar的警告
受影响的库: SQLitePCLRaw.lib.e_sqlite3。在 .NET 8.0 及更高版本中,默认情况下找不到特定于版本和特定于发行版的运行时标识符的资产。有关详细信息,请参阅 https://aka.ms/dotnet/rid-usage。我这里有个别包未选择更新,因为有个别包升级后可能有不兼容的或者某些属性方法变更了,导致编译失败,方法或属性找不到,如果不小心升级了,先卸载对应包,再选择对应版本的包安装即可。至此,项目升级完成,希望本文对你有参考价值。原创 2023-11-28 10:07:46 · 1929 阅读 · 0 评论 -
netcore webapi action 同时支持 get 和 post 请求
首先,我们不管有没有请求体参数过来,我们先从请求体里把内容解析成字符串出来留作之后的备用,然后检查被绑定模型的类型,如果是基本类型,比如int类型的id参数,那我们就可以先看queryString中有没有这个key,没有就从json或者表单里面去找,找到之后转换成对应的类型ConvertTo,其中的bindingContext.ModelMetadata.ParameterName拿到参数名字(id),bindingContext.ModelType拿到参数对应的类型是int。原创 2023-10-26 14:36:33 · 997 阅读 · 1 评论 -
NetCore IIS Redis JMeter 登录压力测试
代码中_cache 为注入的redis缓存接口,可自行编写或使用第三方包,MD5Helper.MD5Encrypt32 你可以在网络上找一个md5加密帮助类即可。近期,由于某项目验收需要,需要登录接口同时满足至少400个账号同时并发登录,于是开始编写测试代码,以满足项目业务需要。在查询结果中全选、右键- 复制为- 制表符分隔值(数据),粘贴到txt中,将txt扩展名修改为csv即可。请求报文中,${name}为变量,上面选择csv设置的,要一致。原创 2023-10-24 10:28:30 · 1168 阅读 · 0 评论 -
如何在.NET Core3.1 类库项目中使用System.Windows.Forms
于是开始了网络搜索,翻到了微软的文档,才找到直接引用 System.Windows.Froms 程序集的方法。针对.NET Core < 3,它在Windows上没有WinForms,但是,如果您需要在Linux上使用WinForms进行编译,则仍然有效,因为.NET Core WinForms仅在Windows上运行。但是您可以做的是将System.Windows.Forms的单声道实现移植到NetStandard。混合框架当然是解决问题的一种方法-但是,为什么要使用.NET Core?原创 2023-10-11 15:23:43 · 927 阅读 · 2 评论 -
Net Core Webapi 使用Redis实现连续登录失败N次 锁定账号N分钟
经过一番思考过后,突然想起项目中使用redis缓存,突发奇想地开始使用redis做文章,看看怎么实现缓存登录失败记录的问题,说干就干,于是开始编写代码。在数据库执行查询的数据看着是正常,可以查询出连续失败的记录,但是实际业务中未使用此接口及查询方法,如果实际业务中使用,请进行完整测试。vUserModel是根据用户名查询用户返回的对象,方法可在登录失败的地方多次调用,yhdlrz-记录登录日志,此代码你可以删除。由于此方法只在登录控制器使用,所有没有单独封装,直接写在了登录控制器内。希望本文对你有帮助。原创 2023-08-04 11:24:43 · 636 阅读 · 0 评论 -
银河麒麟服务器 v10 sp1 安装 .Net6.0
我的系统没有自带.netcore3,也没有yum命令。编辑/etc/profile增加以下两行。至此,Net6.0安装完成了。原创 2023-07-03 14:55:46 · 2733 阅读 · 1 评论 -
Net6.0项目升级到Net7.0
我这里有个别包未选择更新,因为有个别包升级后可能有不兼容的或者某些属性方法变更了,导致编译失败,方法或属性找不到,如果不小心升级了,先卸载对应包,再选择对应版本的包安装即可。至此,代码升级完成了,生成成功。其实与我之前发布的步骤基本一致,升级到net6.0之后,在升级net7.0基本没有可修改的代码,只是升级一些nuget包而已。所有项目按照此步骤操作一遍,完成后再将所有引用的包(即 *.dll)更新升级到最新版(至此,代码升级完成了,运行调用接口均没有问题。注意:有些dll升级不兼容,可不选择升级。原创 2023-06-19 13:48:52 · 601 阅读 · 0 评论 -
.Net Core 2.2 升级到 .Net Core 3.1
微软在更新.Net Core版本的时候,动作往往很大,使得每次更新版本的时候都得小心翼翼,坑实在是太多。往往是悄咪咪的移除了某项功能或者组件,或者不在支持XX方法,这就很花时间去找回需要的东西了,下面是个人在迁移.Net Core WebApi项目过程中遇到的问题汇总:1. 修改*.csproj项目文件修改为2 修改Program修改为3.1 修改Startup.ConfigureServices修改为3.2 修改Startup.Configure修改为。原创 2023-06-17 13:54:25 · 1360 阅读 · 0 评论 -
Html .NetCore The tag helper ‘option‘ must not have C# in the element‘s attribute declaration area
RZ1031:标签帮助器“选项”在元素的属性声明区域中不能有c#。解决办法是在每个使用了@(“...”)的option前加上"!遇到如上问题可以使用!禁用标签助手即可解决。编辑器认为,@(“...”) 不是一个属性。原创 2023-06-17 13:41:51 · 266 阅读 · 0 评论 -
.NetCore WebUploader 实现大文件分片上传
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS 6+, android 4+。两套运行时,同样的调用方式,可供用户任意选用。项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并。采用大文件分片并发上传,极大的提高了文件上传效率。希望以上代码可以对您有所帮助。原创 2023-06-08 16:52:33 · 413 阅读 · 0 评论 -
NetCore Mysql 身份验证方法“caching_sha2_password”失败:Authentication method ‘caching_sha2_password‘ failed.
最新部署的Net6 Webapi项目,服务器重新启动之后连接mysql数据库偶尔会出现错误信息:Authentication method 'caching_sha2_password' failed. Either use a secure connection, specify the server's RSA public key with ServerRSAPublicKeyFile, or set AllowPublicKeyRetrieval=True.原创 2023-06-02 15:43:30 · 3402 阅读 · 0 评论 -
MySql.Data.dll 因版本问题造成报错的处理
使用8.0.1x的MySql.Data.dll连接mysql8.0.xx版本mysql数据库,连接数据库时会报错:Authentication method 'caching_sha2_password' not supported by any of the available plugins.mysql文件中增加my.ini文件,内容如下,关键时最后一行:default_authentication_plugin=mysql_native_password。原创 2023-05-16 16:14:57 · 2508 阅读 · 0 评论 -
StackExchange.Redis.RedisServerException 针对持有错误类型值的密钥的WRONGTYPE操作
StackExchange.Redis.RedisServerException:“WRONGTYPE Operation against a key holding the wrong kind of value” 由于本机存储为字符串类型的json串,而这个老项目实际存储的类型为哈希类型,所以使用在本机的token出现了异常,于是本机redis创建哈希类型的数据,在使用新创建的key获取就可以了原创 2023-04-21 11:40:56 · 458 阅读 · 0 评论 -
C# NetCore XML 反序列化解析错误:<xml xmlns=‘‘> was not expected 及 Encoding=utf-16问题
2. 若类名和根元素名称不一致,在初始化 XmlSerializer 时传入第二个参数,new XmlRootAttribute("【根元素名称】"),以指定根元素名称。StringBuilder/StringWriter,作为XmlWriter输出的话,请注意你的xml的Encoding。经测试后发现原来是使用的StringWriter的问题,1. TResult 类的类名称和 XML 根元素名一致。因此,提醒诸位,如果使用非Stream类的输出,如。至此,序列化xml文件内容成功。原创 2023-04-20 09:19:53 · 2333 阅读 · 2 评论 -
NetCore3.1或Net6.0项目升级到Net7.0
我这里有个别包未选择更新,因为有个别包升级后可能有不兼容的或者某些属性方法变更了,导致编译失败,方法或属性找不到,如果不小心升级了,先卸载对应包,再选择对应版本的包安装即可。所有项目按照此步骤操作一遍,完成后再将所有引用的包(即 *.dll)更新升级到最新版(至此,代码升级完成了,运行调用接口均没有问题。注意:有些dll升级不兼容,可不选择升级。原创 2023-04-13 14:02:52 · 1341 阅读 · 0 评论 -
.net core部署在iis时,防止程序池回收
虚拟/专用内存限制(KB) 改为 0,原值都为0,未作修改。回收:固定时间间隔(分钟) 改为 0,原值1740。进程模型:闲置超时(分钟) 改为 0,原值20。第一步:打开iis 点击应用程序池。第二步:在指定的应用程序池上右键。希望本文对您有帮助。原创 2023-03-06 09:16:03 · 1755 阅读 · 0 评论 -
MySQL8.x group_by报错的4种解决方法
然后通过表连接 on d.emp_no = s.emp_no 使这两张表结合,通过on a.salary = b.salary使薪资统一,即这两张表连接后的表的薪资为每个部门的最高员工薪资。如果代码中含有group by聚合操作,那么select中的列,除了使用聚合函数之外的,如max()、min()等,都必须出现在group by中。但是,当我们再一次重新启动数据库时,可能会恢复原样,还是会出现ONLY_FULL_GROUP_BY的报错,这就需要我们再一次修改数据库配置。那有没有可以永久生效的办法呢?原创 2023-02-17 10:07:45 · 5498 阅读 · 0 评论 -
.NET Core 监控 Redis key过期事件
通过这种方式,订阅者可以明确订阅在 Redis 配置中设置的 EXPIRED 密钥通知,并在CONFIG SET redis-cli 命令中使用KEx参数值。我们也可以使用 __keyevent@0__:*订阅所有按键事件,例如,如果您将 Redis 设置为在 Redis 配置中使用KEg参数设置的通用按键通知触发事件。使用此功能可能有益的简单用例,例如喜欢,您希望在某些密钥过期时收到通知,您想要监视特殊密钥的更改,以及您能想到的任何其他扩展用例。EXPIRED:key,即为5秒后key过期收到的通知。原创 2023-02-07 09:00:23 · 989 阅读 · 0 评论 -
NetCore3.1 项目升级到 Net6.0 项目发布问题
排除要复制到输出文件夹的有问题的文件。在本例中,我们将排除以下文件:compilerconfig.json 和 package.json 将以下行添加到您的 common.props(位于解决方案的根目录中)您可以将以下构建属性添加到所有可发布 (*.Web) 项目的 *.csproj 文件中。此属性将绕过此检查并与以前的 .NET5 一样工作。试了两个还是报错,于是将项目中的WebApiService.xml文件从项目中排除,结果发布成功。原创 2022-11-03 09:14:19 · 1287 阅读 · 0 评论 -
NetCore3.1升级Net6.0项目中cookie名称不能包含一些字符
做了一次编码,结果通过了;当然你也可以对字符进行加密处理,将特殊字符处理掉即可。我的cookie名称包含了冒号。原创 2022-11-02 14:44:34 · 282 阅读 · 0 评论