![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NETCORE
文章平均质量分 62
9200237
这个作者很懒,什么都没留下…
展开
-
关于.NETCORE站点程序部署到nginx上无法访问静态文件和无法正确生成文件的问题解决过程。
根据百度查出来的资料提示。1、关于无法生成二维码的问题,网上搜到的资料有个说法是linux系统中,路径中不能有 \\ 这样的反斜杠,应该用 / 这样的正斜杠来分隔目录上下级,而且windows是可以支持 正斜杠/这样的文件物理路径的。结果还是提示找不到logo图片, 最后我到宝塔里直接用这个报错的路径去访问文件,也提示找不到,最后发现是目录最后一级的 CompanyLog 这个名字的l大写了, 但实际目录却没有大写,linux是区分大小写的,所以找不到文件了。解决了这个问题之后,发现还有错误日志。原创 2024-07-09 15:20:49 · 1026 阅读 · 0 评论 -
.NET CORE 屏蔽重复提交
PreventDoublePostAttribute属性只使用了tokens.FormFieldName,那么hardcode一个hidden formid应该也可以,这样就不需要AntiForgery了。引入PreventDoublePostAttribute属性。再说AntiForgery也不是这么用的。原创 2024-05-27 09:49:10 · 197 阅读 · 0 评论 -
.netcore 通过实体修改mysql记录行提示 MySqlConnector.MySqlException:“Field ‘order_proid‘ doesn‘t have a default
MySqlConnector.MySqlException:“Field 'order_proid' doesn't have a default value”mysql Update表记录,碰到一个非常奇怪的问题,有哪位大佬碰到过没有。不管怎么设置字段允许为空,他都提示这个字段没有默认值。分两个晚上尝试了几个小时,目前还未能解决。留坑,解决了再来更新。然后又尝试直接用sql去update表字段。从代码层面是解决不了问题了。原创 2024-03-11 21:06:13 · 441 阅读 · 0 评论 -
abpvnext给基础表abpuser增加扩展表扩展注册用户业务
【代码】abpvnext给基础表abpuser增加扩展表扩展注册用户业务。 操作角色表abproles、租户表abptenants、用户表abpusers、用户角色表abpuserroles。原创 2024-01-11 16:31:23 · 635 阅读 · 0 评论 -
abpvnext框架的项目部署到linux arm64版的docker中
接下来其他的步骤就跟原来差不多了, 部署到arm64平台的系统,要注意的就是发布的时候指定平台linux-arm64 , dockefile里面第一行要加指定平台参数-focal-arm64v8,然后创建镜像的时候如上面命令也要指定平台参数--platform linux/amd64。注意啊,如果命令从文档复制过来在执行总是失败,然后又确定容器名和端口没有重复,那就自己手工敲命令,比如我上图这样, 坑死了, 复制修改了容器名,和端口很多遍都是失败, 手工敲就没问题了。原创 2023-12-20 17:06:05 · 1267 阅读 · 1 评论 -
netcore swagger 错误 Failed to load API definition
后来我就清理编译dll ,重新编译再启动后端调试,登录后端服务接口,重新进入到swagger界面之后,控制台有提示具体接口报错了,错误截图如下。根据提示找到控制器代码位置,其实还是接口缺少attribute,加上 HttpPost和SwaggerOperation属性就没有问题了。根据网上查询到的资料说明,说一般swagger这种错误都是控制器里有接口代码异常造成的,通常是接口没有加属性Attribute, 比如[HttpPost("Delete")]、[HttpGet("Delete")]。原创 2023-12-04 13:48:38 · 1195 阅读 · 0 评论 -
.netcore 操作aspose.words导出pdf
控制图形的显示位置,这个地方好像必须要选一个位置,否则会内容显示不全,我开始用的LegendPosition.None,他就显示不了那几条线的颜色和名称说明文字。为了搞出这个效果浪费了我一天时间。个人重点关注的是生成曲线图的部分,浪费了我很多时间。原创 2023-12-01 14:01:54 · 915 阅读 · 0 评论 -
netcore 获取应用程序或者站点根路径的一点知识和教训
然后调试了很久,各种办法试,发现http方式只能访问到项目的根目录JQ.TAHM.HttpApi.Host这一级,在这一级的wwwroot目录里的文件是可以访问到的。但是往下的 bin\Debug\net6.0\wwwroot\File\Report\20231130 这种,http他是访问不到的。但是我是在一个业务类里面实现pdf文件生成,为了保持这个业务类的相对独立性,我又偷懒不想将IWebHostEnvironment通过控制器逐层传递依赖注入到业务类里面。鬼使神差的不知道怎么的搜到了可以使用。原创 2023-11-30 15:38:24 · 755 阅读 · 0 评论 -
vue 中 js 金额数字转中文
我使用的框架vol.core。客户需求要将录入框的金额数字转换成中文在旁边显示,换了几种函数,最终确定如下函数。在公共函数库文件common.js中增加一个函数changeToChineseMoney,然后到页面代码中调用。原创 2023-11-26 13:34:29 · 687 阅读 · 0 评论 -
.netcore 获取appsettings
.netcore 获取appsettingsIConfiguration myconfiguration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").Build();原创 2023-11-24 17:14:34 · 1001 阅读 · 0 评论 -
vue报错RangeError: Maximum call stack size exceeded
2、检查自己设置的路由本身是否有问题,我是检查了路由指向的vue代码很久之后,实在没发现问题,然后检查路由设置,发现了如下问题,/loginout 这个路由他的重定向属性也指向 /loginout,这就有问题了,假设/loginout有问题,重定向还指向他自己,就是个死循环了。比如路由指向的vue文件里代码有错误,或者设置路由时重定向了路由自己,造成死循环。1、首先检查自己跳转的路由地址的代码本身是否有语法错误之类的,造成错误,一般没有特别好的办法,挨个注释去检查。原创 2023-08-28 20:33:06 · 2522 阅读 · 0 评论 -
外部链接跳转到vue项目传递参数实现单点登录
这一步其实vue比较熟悉的朋友很容易就想到了,用router.beforeEach 钩子函数来拦截路由,然后解析url中的参数,一般情况下vue项目内部路由之间是不可能去通过url来传递参数的,所以这个地方其实加了拦截规则也只会对外部跳转url的参数有用。首先前台门户的mvc项目跟后台vue项目他们是不同的站点,mvc项目端口是9995,vue项目的端口是9995。这个需求中mvc项目相对于vue项目来说是外部链接,他要跳转到vue项目,并传递登录的用户信息给vue项目,才能让vue项目免除登录。原创 2023-08-05 15:19:36 · 1478 阅读 · 0 评论 -
asp-action不生效需要加TagHelpers引用
在照着微软官网示例做MVC分页的时候。我加的asp-action(请求路由名称)属性一直不生效,加了asp-controller(请求只想的控制器))也不能产生请求到后端。指定了'href'的不能有以'asp-route-'开头的属性,也不能有'asp-action'、'asp-controller'、'asp-area'、'asp-route'、'asp-protocol'、'asp-host'、'asp-fragment'、'asp-page'或'asp-page-handler'属性。原创 2023-07-20 11:52:50 · 255 阅读 · 0 评论 -
执行dotnet ef database update EF同步数据表时报错 Duplicate column name ‘xxx‘
然后编译JQ.TAHM.EntityFrameworkCore工程, 再次执行 dotnet ef database update。只不过我新增的业务表在数据库也没有创建成功,因为新增加的20230602092423_tahmCollectJob_init.cs文件类里压根就没有我新增加的表和字段的创建内容。然后我打开新增加的init代码初始化文件,发现他居然只有ExtraProp这一个字段的初始化代码,而这个还偏偏不是我需要修改的字段。我为abpnext项目加了一个新表的业务代码。原创 2023-06-05 12:05:11 · 329 阅读 · 0 评论 -
abpvnext --关于数据过滤的使用和禁用
然后我修改json配置文件,将EF的日志级别修改为Information,输出sql脚本发现每次查询他会自动加上两个我没有加的条件,尤其是(`d`.`TenantId` IS NULL))),会跟我后面自定义的条件 AND (`d`.`TenantId` = @__tenantid_1) 互斥,造成本来满足条件的数据查不到了,如下图所示红框圈住部分的sql日志。经过群内大佬指点,他们说是这个字典实体使用了abp的数据过滤机制引起的。我一查实体果然有继承一个IMultiTenant。原创 2023-04-24 11:02:46 · 571 阅读 · 0 评论 -
Serilog介绍
其中包Serilog是Log核心库,Serilog.Sinks.Console是Log的控制台输出库,这个也是日志框架的一贯策略,一个核心库加多个输出库组合使用,这样可以保持良好的扩展性。//日志等级由低到高(等级越低输出的日志信息越详细):Verbose->Debug->Information->Warning->Error->Fatal。ILogger对象用于记录日志,和其他日志框架差不多。Serilog日志级别由低到高原创 2023-04-21 16:00:17 · 2185 阅读 · 0 评论 -
abpvnext 创建数据时发布本地事件ILocalEventBus.PublishAsync ,创建的数据被阻塞的问题解决
我有一个需求,需要在字典服务里创建字典类型成功后执行ILocalEventBus.PublishAsync 发布一个事件,让主业务服务订阅这个事件。加上await UnitOfWorkManager.Current.CompleteAsync();这一行就可以了,还可以写成下面这样。原创 2023-04-20 17:30:31 · 885 阅读 · 0 评论 -
关于 await 和task.result的区别的疑惑
await或者 .result/ .getwaiter().getresult() 这两个的区别在于,当遇到await会把线程挂起,开启别的线程继续后面的操作。但是遇到 .result会一直等在这里,不会开新的线程。今天在给一个方法加业务时,需要提前使用一个本来应该返回给调用者使用的实体。就造出了如下图所示的代码形式, 专门创建一个对象接收await task得到的实体。然后我觉得这样await一个task两次,有点脱裤子放屁的感觉,又改造出如下的效果,用task.result的方式来阻塞获取id。原创 2023-04-14 16:09:58 · 939 阅读 · 0 评论 -
abp vnext pro 使用笔记
1、前端使用nswag 生成代理,nswag 目录下有nswag.json文件,文件中有个url地址指向的是后端的swagger生成的json,如果后端改动了[]中暴露的接口名,最好是后端清理编译的缓存,重新编译启动,前段也退出重新执行 npm run nswag ,其实后端控制器那里做了任何改动都要在前端更新nswag。5、推测后端框架代码可能在缓存里产生了很多数据,所以如果修改了代码,想要产生新的版本,最好是清理干净解决方案,然后等待一段时间再重新启动服务,这样缓存可以消失干净。原创 2023-04-04 15:15:06 · 605 阅读 · 0 评论 -
async 的三大返回类型
返回 void,意味着不能 await 该异步方法,即可能出现线程阻塞,并且也无法获取 exception,抛出的异常,通常这些异常会导致我们的程序失败,如果你使用的是 Task 和 Task,catch 到的异常会包装在属性里面,调用方法就可以从中获取异常信息,并选择正确的处理方式。一个返回类型为 Task 类型的异步方法,它的具体实现不应该包含 return 语句,或者说是一个 return void 的语句。你如果只是想知道执行的状态,而不需要知道具体的返回结果时,请使用 Task;原创 2023-04-11 15:55:01 · 1121 阅读 · 0 评论 -
abpvnext开发异常:Missing type map configuration or unsupported mapping
我的项目在操作一个新的实体插入数据,映射dto时抛出了如下异常: 翻译:缺少类型映射配置或不支持的映射 经过检查和查询资料,是因为DomainAutoMapperProfile文件中缺少实体和dto之间的map映射关系转换注册。加上CreateMap(); 即可原创 2023-04-03 17:26:50 · 329 阅读 · 0 评论 -
工作单元介绍
维护受业务事务影响的对象列表,并协调变化的写入和并发问题的解决。这是《企业应用架构模式》中给出的定义,不过看上去有点抽象。它大概的意思是说,对多个操作进行打包,记录对象上的所有 变化,并在最后提交时一次性将所有变化通过系统事务写入数据库。当然,工作单元不一定是针对数据库的,不过大部分程序员还是工作在关系数据库中,所以我默认你也在使用关系数据库,由此产生的不准确性你就不要再计较了。初步看上去,工作单元与事务颇为相像,一个事务也会包装多个数据库操作,并在最后提交更改。原创 2023-03-30 15:41:37 · 840 阅读 · 0 评论 -
abpvnext --The database operation was expected to affect 1 row(s), but actually affected 0 row(s)
以上错误是我的 IDistributedEventHandler 实现类TahmEventHandler(用来消费mqtt的消息内容)的消息订阅事件 HandleEventAsync中,因为给服务器发送消息很快,执行的消息数据解析业务方法,执行数据操作时报出的错误。(原因我还没搞明白) ,所以我用ISingletonDependency来测试,然后用mqttx客户端使劲给服务器发送消息,我的业务系统就抛出了上面的错误。数据库操作预计影响1行,但实际影响0行;自实体加载以来,数据可能已被修改或删除。原创 2023-03-30 14:37:15 · 451 阅读 · 0 评论 -
abpvnext 开发中ValidationErrors和LifetimeScope异常的解决办法
abpvnext Method arguments are not valid! See ValidationErrors for detailsInstances cannot be resolved and nested lifetimes cannot be created from this LifetimeScope as it (or one of its parent scopes) has already been disposed.原创 2023-03-24 15:52:23 · 1476 阅读 · 0 评论 -
由于““是返回“Task”的异步方法,因此返回关键字不能后接对象表达式。是否要返回“Task<T>” 错误说明和解决方案
无返回值的情况下, async Task 等同于async void,两者间的区别是:异步函数签名为async Task(Task)时,函数调用处可以使用await Task.WhenAny(), await Task.WhenAll() 等方式组合使用;在主动调用其他异步函数的行数结尾处返回时,可以 await Task.WhenAny(), await Task.WhenAll() ,await Task.CompletedTask 来处理。是否要返回“Task”原创 2023-03-21 11:46:30 · 499 阅读 · 0 评论 -
abpvnext 运行启动顺序
Configure:其中调用app.InitializeApplication,这是aspnetcore 中参数 Microsoft.AspNetCore.Builder.IApplicationBuilder执行对应用程序的初始加载。其中ConfigurePreheat为委托对象方法,里面包含自定义的需要预热的加载。我的项目是github上基于abp创建的一个快速框架Abp Vnext Pro来生成的,可能会跟abp官方生成的项目结构稍稍有点区别,单基本上相同。---------未完待续。原创 2023-03-13 17:54:19 · 282 阅读 · 0 评论 -
Cannot find compilation library location for package ‘System.Security.Cryptography.Pkcs‘
Cannot find compilation library location for package 'System.Security.Cryptography.Pkcs'在您需要暴露接口的的工程文件 .csproj 文件节点 /Project/PropertyGroup 下添加下面的设置。true原创 2022-12-23 14:04:58 · 916 阅读 · 0 评论