.net core
香煎三文鱼
百分之八十的问题可以运用百分之二十的知识来解决,而剩下的百分之二十的问题需要运用百分之八十的知识来解决。准备好那百分之八十的知识,才会在遇到有挑战的问题时更加游刃有余,机会永远留给准备好的人。
展开
-
.Net Core WebApi集成JWT实现身份认证
前言随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登录更为简单。JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。JWT不仅可用于认证,还可用于信息交换。善用JWT有助于减少服务器请求数据库的次数。适用于多客户端原创 2021-09-24 11:21:32 · 4389 阅读 · 2 评论 -
ASP.NET Core 运行原理剖析
1.1. 概述在ASP.NET Core之前,ASP.NET Framework应用程序由IIS加载。Web应用程序的入口点由InetMgr.exe创建并调用托管。以初始化过程中触发HttpApplication.Application_Start()事件。开发人员第一次执行代码的机会是处理Application_StartGlobal.asax中的事件。在ASP.NET Core中,Global.asax文件不再可用,已被新的初始化过程替代。ASP.NET Core 应用程序是在.NET Core 控原创 2021-08-20 10:17:38 · 1387 阅读 · 0 评论 -
Hangfire发布托管到iis无法正常执行任务
当我们设置了一个后台周期性任务后发布到iis,如果出现网站间隔时间较长没有用户去访问,这是iis可能就会自动回收导致Hangfire服务停止,导致我们的后台任务终止执行,直到进来一个请求(网站内任意地址)任务启动,那么如果请求很久没来,这个任务将无法被启动,错过任务应该执行的操作。原创 2024-07-13 09:30:27 · 323 阅读 · 0 评论 -
C# .net6使用Hangfire
Hangfire 是一个用于 .NET 的任务调度库,允许你在后台运行任务,而不需要依赖外部的任务队列服务或复杂的基础设施。它简化了后台任务的创建、调度和管理过程,使得在 .NET 应用程序中处理长期运行的任务变得更加容易和可靠。目前1.6+版本已支持.NET Core、.Net 5+。个人认为它最大特点在于内置提供集成化的控制台,方便后台查看及监控。原创 2024-07-12 17:41:53 · 681 阅读 · 0 评论 -
.net 6 api 修改URL为小写
我们创建的api项目,url是[Route("[controller]")],类似这样子定义的。我们的controller命名是大写字母开头的,显示在url很明显不是很好看(url不区分大小写)。转换方式:原创 2024-06-19 09:17:24 · 410 阅读 · 0 评论 -
C#中使用Mapster
如果我们每次在使用映射时都需要对一些字段进行特殊处理,那么会在每个使用的地方编写映射。我们可以配置一个全局的通用映射关系,在程序启动时就定义映射关系。原创 2024-05-30 17:08:46 · 424 阅读 · 0 评论 -
net core在代码中添加日志记录功能,记录每个请求的处理时间
net core在代码中添加日志记录功能,记录每个请求的处理时间原创 2024-05-14 11:11:12 · 229 阅读 · 0 评论 -
net6全局api过滤统一返回格式
在开发过程中我们的api接口返回格式如果不统一的话,前端去解析起来可能会比较麻烦,我们应该统一返回形式,固定数据的存放。原创 2024-03-30 16:47:20 · 269 阅读 · 0 评论 -
.net6项目启用https协议
.net6项目启用https协议原创 2024-03-26 10:40:02 · 352 阅读 · 0 评论 -
net6使用StackExchangeRedis实现分布式缓存
net6使用StackExchangeRedis实现分布式缓存原创 2023-12-19 17:06:38 · 1426 阅读 · 0 评论 -
解决ConfigurationBuilder未包含“SetBasePath”的定义
在类库文件中使用ConfigurationBuilder读取json文件时提示ConfigurationBuilder未包含“SetBasePath”的定义。原创 2023-10-19 13:33:16 · 808 阅读 · 0 评论 -
C# net core中的过滤器(Filter)使用及跳过过滤器
过滤器(Filters)是用于在ASP.NET Core应用程序中执行全局或局部的操作的组件。这些过滤器可以用于处理请求前、请求后、异常处理等不同的阶段。以下是.NET 5中常用的一些过滤器类型:在 ASP.NET Core 中,过滤器是一种可以在特定的阶段处理请求的方法。它们在一个 action 方法执行之前或之后运行,可以用来处理错误、指定缓存设置、验证请求和响应,等等。原创 2023-09-14 15:04:15 · 3465 阅读 · 0 评论 -
安装或者升级NPOI到2.6以上报无法解析依赖项“SixLabors.Fonts”
在升级npoi时提示无法解析依赖项“SixLabors.Fonts”错误,这是因为依赖了“SixLabors.Fonts”原创 2023-05-26 10:37:27 · 875 阅读 · 0 评论 -
net5项目自定义服务端口号Program
net5项目自定义服务端口号原创 2023-05-09 15:23:48 · 367 阅读 · 0 评论 -
C#使用ImageSharp使图片旋转
在某些情况下图片可能不是正常的角度,我们需要对图片进行旋转,这里我们用到ImageSharp中间件来轻松完成,下面一起看一下:原创 2022-12-16 16:22:21 · 1776 阅读 · 0 评论 -
C#使用ImageMagick无损等比例压缩图片
众所周知ImageMagick是MagickNet著名的图片处理工具处理图片只需几行代码在包控制管理工具中安装Magick.NET-Q16-AnyCPU使用MagickImage进行图片等比例压缩原创 2022-06-23 15:09:00 · 1802 阅读 · 2 评论 -
C#旋转图片
有时我们在处理图片时发现图片不是正的是反方向的,在程序里该怎么处理呢?下面代码教你怎么旋转图片原创 2022-06-21 09:28:15 · 978 阅读 · 0 评论 -
net core上传文件异常:Multipart body length limit 16384 exceeded.
.Net Core 中接收上传文件时会遇到这个异常: Multipart body length limit 16384 exceeded两种解决办法1.修改配置在startup的ConfigureServices方法中添加以下代码services.Configure<FormOptions>(x => { x.ValueLengthLimit = int.MaxValue; x.Value原创 2022-04-26 09:38:46 · 2513 阅读 · 1 评论 -
net core获取客户端ip
api控制器注入HttpContext//注入HttpContext private readonly HttpContext _httpContext; public UploadFileController( HttpContext httpContext) { _httpContext = httpContext; }获取方法private IPAddress GetRemoteIPAddress(this Htt原创 2022-04-25 16:11:47 · 2419 阅读 · 0 评论 -
net core引用外部dll发布后报错找不到文件
先看一下错误起因是因为在项目中引用了一个自己编写的dll类库,发布之后调用dll中的方法提示找不到此文件。dotnet core 只支持引用项目和nuget中的dll,外部dll虽然也可以引用进项目,并且可以被vs识别,而且编译后也可以在bin文件夹下看到对应的dll。但是,运行时并不会加载这些外部dll,因此在运行时就会收到找不到dll文件的异常。在 github 上的 issue 中,曾经看到有一个人说这个问题在 dotnet core 2.0 会修复,,,然而并没有因此需要在代码中去主动加原创 2022-04-24 11:40:05 · 2274 阅读 · 0 评论 -
HTTP405: 错误方法 - 不支持使用的 HTTP 谓词。
网上百度了很多说是html页面只支持get请求,不支持post请求。其实这不对,我使用的是iis服务器,其实是安装得时候把WebDAV装上了IIS10 默认支持 PUT 和 DELETE 请求,但 IIS8.0 及以下版本默认不接收 PUT、DELETE 等不常见的 HTTP 谓词,服务器会返回 “405 – 不允许用于访问此页的 HTTP 谓词”或“Remote server returned error: (405) method not allowed(远程服务器返回错误: (405) 不允许的方原创 2022-04-18 11:04:58 · 1272 阅读 · 0 评论 -
The Entity Framework tools version升级
今天在执行数据库迁移的时候包控制台管理工具给了一个警告 如下:The Entity Framework tools version ‘5.0.13’ is older than that of the runtime ‘5.0.15’. Update the tools for the latest features and bug fixes.意思是:实体框架工具版本“5.0.13”比运行时版本“5.0.15”更旧。更新工具以获得最新的特性和bug修复。接下来以管理员身份打开CMD 运行以下命令原创 2022-03-17 10:39:40 · 2358 阅读 · 0 评论 -
C#封装DLL类库,调用类库
1、在VS中创建项目选择类库我这里是netcore的项目就选择netcore的 根据项目定2.新建好项目可自己新建一个类 写自己需要的方法注意:被调用的方法名都要写成public这里我写了一个公用方法的类,里边写了一个生成随机数据的方法3.点击项目生成解决方案,然后在项目目录的bin/debug下即可发现封装好的dll类库4.封装成DLL时程序集名字要跟程序里的 namespace 命名一致,如下图,否则应用DLL时无法引用成功。C# 调用类库1.在项目中右键依赖项选择添加项目原创 2022-02-08 15:16:16 · 5948 阅读 · 0 评论 -
.net5项目托管到iis无法访问
今天在部署net5的项目时出现了以下问题。由于我的项目是前后端分离的在iis部署了两个站点,部署后用~~谷歌浏览器~~ 访问出现以下问题以下错误显而易见是前端访问后端时出现了跨域问题,但是后端的代码明明设置了跨域为啥还报跨域呢,于是我又去重新配置跨域、重新发布、重启电脑…折腾许久后还是报跨域(直接原地爆炸)。然后换了个思路使用ApiPost去调用后台的接口接口返回以下错误接口返回一堆乱码,没关系。状态码是500 好了 说明项目有问题于是换了浏览器 微软的神仙Edge,访问项目时报500错误原创 2022-01-12 17:39:30 · 610 阅读 · 0 评论 -
net core文件接收(jpg、png、zip、pdf等自己设置)
apiusing Microsoft.AspNetCore.Mvc;using PublicHealthUploadFile.PublicMethods;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net.Http.Headers;using System.Threading.Tasks; namespace UploadFile.Control原创 2022-01-04 15:02:48 · 1633 阅读 · 0 评论 -
Asp.Net Core 发布IIS报错 HTTP Error 500.30 - ASP.NET Core app failed to start
报错提示让 检查系统事件日志中是否有错误消息检查事件日志发现根据 ASP.NET Core 模块 | Microsoft Docs 可知,默认配置是进程内托管,设为 InProcess,显示指定Web项目为进程外托管解决办法:只需要将发布后的web.config文件中的hostingModel=“inprocess” 改为hostingModel="OutOfProcess"或者直接删掉hostingModel=“inprocess”其他解决办法参考:HTTP Error 500.30 -原创 2021-12-30 13:34:16 · 26986 阅读 · 1 评论 -
ABP vnext 未通过Token访问接口时显示HTML,调整为跳转403和提示
在*****.****.Host的PublicHealthHttpApiHostModule文件中添加以下内容context.Services.ConfigureApplicationCookie(options => options.Events.OnRedirectToLogin = httpContext => { httpContext.Response.ContentType =原创 2021-12-23 13:33:15 · 929 阅读 · 0 评论 -
C# Serilog日志框架
在.NET使用日志框架第一时间会想到NLog或是Log4Net,Serilog 是这几年快速崛起的Log框架之一,Serilog是以Structured logging 为基础进行设计,透过logging API 可以轻松的记录应用程式中对象属性,方便快速进行logging 内容进行查询与分析,并将其纪录内容透过json (可指定) 的方式输出。在过去的几年中,结构化日志已经大受欢迎。而Serilog是 .NET 中最著名的结构化日志类库 ,我们提供了这份的精简指南来帮助你快速了解并运用它。原创 2021-12-16 11:12:48 · 12032 阅读 · 3 评论 -
net core配置跨域
什么是跨域?浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域跨域的几种情况 1、端口和协议的不同 2、localhost和127.0.0.1虽然都指向本机,但也属于跨域一般情况WebApi都是跨域请求,没有设置跨域一般会报以下错误关键字 Access-Control-Allow-Origin corsNo 'Access-Control-Allow-Origin' header is present on the requested resource原创 2021-12-07 15:29:53 · 3939 阅读 · 0 评论 -
net core获取网站运行目录
string basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);string picturesPath = basePath + "/../pictures/";//网站运行目录上一级同级目录根目录根目录上级同级目录原创 2021-12-06 09:35:39 · 859 阅读 · 0 评论 -
An exception was thrown while activating Castle.Proxies.AppService测试AProxy -> Castle.Proxies.AppServ
今天在是用abp vnext的自动控制器是碰见了个比较坑的地方 报错如下我的"Appservice测试A"里注入了"Appservice测试B",“Appservice测试B"里边又注入了C,C里边又注入了"A”这样是不允许的,会造成死循环,service之间不能相互调用后再注入。也就是说A注入了B B就不能再注入A...原创 2021-11-12 14:37:52 · 6487 阅读 · 0 评论 -
api下载文件三种方式
三种方式:返回url地址 前台以window.open打开该地址public ActionResult GetUrl(){//拼接一个地址 返回给前台return Json(new { data = "https://qwert.com/export/" + Path.GetFileName(ExportFileName) });}前端:window.open(url);以文件流形式返回,但是会出现文件占用无法下载情况public ActionResult GetUrl(){原创 2021-11-09 13:35:00 · 4313 阅读 · 0 评论 -
C#、net core、net5 WebApi的get、post请求参数实体注解及自定义注解C# 常用的ValidationAttribute 子类
进行接口请求的时候难免会对请求字段进行验证,验证对象的所有字段的值是否合乎要求,如进行非空检测,长度检测等等。在有些情况下使用框架自带的注解可能满足不了我们的需求,我们需要自定义一些注解类型,下面一起学习一下自定义注解的使用1.自定义注解定义一个注解类型的类,继承于ValidationAttributeValidationAttributeusing System;using System.Collections.Generic;using System.ComponentModel.DataA原创 2021-10-27 11:10:08 · 2516 阅读 · 0 评论 -
上传excel,并保存excel内容
控制器using Hepu.Controllers;using Hepu.Web.Host.Helper;using Hepu.Web.Host.Startup;using Microsoft.AspNetCore.Mvc;using System;using System.Collections.Generic;using System.Data;using System.IO;using System.Linq;using System.Threading.Tasks;names原创 2021-09-10 14:30:56 · 383 阅读 · 0 评论 -
解决.net core 读取json文件中文乱码的问题
项目中需要用到一些可配置的中文字符串,但是读取时发现中文乱码解决办法:使用高级选项保存解决菜单栏中——工具——自定义命令——添加命令——文件——高级保存选项保存文件时选择高级保存选项 选择utf-8...原创 2021-08-11 16:48:36 · 1234 阅读 · 0 评论 -
判断数组、集合list、string、int、double等是否为空,判断是否为值类型
1.判断数组、集合list、string、int、double等是否为空private void button35_Click(object sender, EventArgs e) { string aa = ""; string bb = null; string cc = string.Empty; qq dd = new qq(); string[] ee原创 2021-03-04 16:20:41 · 2091 阅读 · 2 评论 -
6.Code First 数据注解(实体属性注解)C# 常用的ValidationAttribute 子类
本文重点介绍如何使用 DataAnnotations(在 System.ComponentModel.DataAnnotations 命名空间中)和C# 常用的ValidationAttribute 子类(数据验证 注解)对类进行配置,着重讲述常用的配置。很多 .NET 应用程序(如 ASP.NET MVC)都能够理解 DataAnnotations,它允许这些应用程序对客户端验证使用相同的注释。原创 2021-03-03 15:49:55 · 1413 阅读 · 1 评论 -
ef codefirst字段类型与sqlserver表字段类型对应概要
1、sqlserver中nvarchar(50),对应EF中:[MaxLength(50, ErrorMessage = "最大长度为{1}")]public string Name { get; set; }2、sqlserver中char(10),对应EF中:[MaxLength(10)][Column(TypeName = "CHAR")]public string Name { get; set; }3、sqlserver中smallint,对应EF中:public原创 2021-01-28 13:42:24 · 860 阅读 · 0 评论 -
post man以Content-type: application/octet-stream方式请求api
在请求头headers中将Content-type改为application/octet-stream方式(流方式),发送数据后端api [HttpPost] [DontWrapResult] public async Task<dynamic> GetReturnStateAsync() { try { using (var ms = new Mem.原创 2021-01-20 09:15:08 · 12646 阅读 · 5 评论 -
abp api返回自定义结构体
abp常规返回的结构体是经过封装后,结构如下{ "result": { "ok": true, "msg": "sucess", "data": "123" }, "targetUrl": null, "success": true, "error": null, "unAuthorizedRequest": false, "__abp": true}但有时需要 获取干净的返回,不需要什么封原创 2021-01-20 09:04:08 · 1760 阅读 · 0 评论