• 2022年11月4日

consul中.net 6服务被下线问题

使用.net6开发的服务总是被consul下线删除,排查后应该是.net webapi项目设定了服务停止自动注销注册(解决方案1)或者超过一定时间没被访问导致被释放,而再次健康检查时启动时间超过了consul的健康检查超时时间,同时deregisterCriticalServiceAfter的时间未能涵盖再次检查的时间(解决方案2)。 解决方案1: 检查Consul注册方法代码中是否包含了服务停止自动注销服务,例如之前代码中的: 如果包含如上代码,把它注释掉或者删除掉。 解决方案2(如果不存在方案1的问题): 1、心跳时间interval设定不要太大,例如5秒、10秒 2、超时时间timeout设定尽量大点,例如10秒、30秒、60秒,尤其是设定了较多的中间件、aop设定等启动需要较多时间的项目。 3、自动下线时间deregisterCriticalServiceAfter设定尽量大点,例如60秒、120秒,这个时间尽量是(interval + timeout) X 3(也就是最少能进行3次的健康检测)

详细内容

.net 6配置api网关ocelot

1、新建webapi项目 2、添加依赖 3、添加配置(配合Consul,安装Consul可参考《.Net6 Furion框架配置Consul》) 4、Startup.cs配置 注意: services.AddOcelot().AddConsul() 如果缺少紫色部分(需要安装对应的Provider,例如Ocelot.Provider.Consul),配置又启用了服务发现,就会出现如下错误:

详细内容

.Net6 Furion框架配置Consul

1、安装Consul Windows系统可参考:《Windows安装Consul并配置为Windows服务》 2、搭建Furion 使用的Sqlsugar的Webfirst生成的Furion,因此构成如下: 3、配置 3.1 Furion.Web.Core项目配置 添加依赖: 修改appsettings.json 添加Helper Startup.cs配置: 3.2 Furion.Web.Entry配置 appsettings.json配置: 新建api或添加action 至此完成Furion配置Consul操作,如果需要新增其他服务,只需要新建webapi项目,按照(3)步骤操作修改相应的配置即可!注意创建项目时不用勾选OpenApi,因为Furion本身就有Swagger配置。

详细内容

Windows安装Consul并配置为Windows服务

1、Consul下载:https://developer.hashicorp.com/consul/downloads 选择Windows版本下载 2、解压到特定目录,例如:D:\Consul\ 3、配置环境变量Path增加解压的路径,例如: D:\Consul\ 4、打开cmd,运行 sc create “Consul” start=”auto” binPath=”consul agent -dev” 5、【可选】重启服务器 6、打开服务管理,查看Consul是否正常启动,如果正常启动表示已成功配置 访问Consul:http://localhost:8500

详细内容

Furion的统一返回值模型应用

编写webapi就会涉及到返回结果给客户端(IActionResult),客户端根据返回的结果判断当前接口调用情况再给用户相应的提示或界面。 如果没有一个统一的结果结构,后期维护时或新成员介入开发时会增加开发难度,Furion提供了一个统一返回值模型。 一、定义返回模型ApiResultProvider.cs 二、Startup.cs配置 三、使用 使用的时候,要返回自定义的错误内容可以通过throw new Exception方式将错误内容传递到OnException,因为这样操作没有设定ErrorCode,所以可以进行处理(如上面红色字部分)。

详细内容

添加数据到数据库时提示Duplicate entry ” for key ‘xxx’

开发.net core程序时通过sqlsugar添加数据到数据库时添加1条记录后,添加第二条提示 Duplicate entry ” for key ‘xxx’,而这个xxx并非对应数据表的字段,这是因为另外定义了名为xxx的索引,而且将索引设定为UNIQUE,导致添加第一条后,添加第二条索引字段出现重复值而被数据库提示错误。 解决方法旧是把这个索引修改为index就ok,当然了,如果这个索引确实需要唯一,那就要排查你添加数据的逻辑了。

详细内容

Furion使用JWT验证App.User?.FindFirstValue无法获取jwt的信息

熟悉Furion过程中,使用jwt作为webapi验证方式,在action中通过App.User?.FindFirstValue(“UId”);尝试获取用户的ID,结果提示未找到(null)。 经过反复排查,发现问题如下:客户端Header添加jwt的token如下: 而我错误的使用了如下,一个键名错误,另一个少了Bearer 部分 修改过来后,即可正常获取! PS: Furion自带的JWT机制只需要简单的配置即可完成对webapi的验证,且可以自动刷新token。可以剩下我们不少的工作。

详细内容

uniapp使用@touchmove配合view实现滑动条

开发智能文字转语音小程序需要设置音量、语速、语调等参数,考虑使用滑动条实现,然而uniapp并没有直接滑动条的组件,因此使用view配合touchmove来实现。 页面加载初始化代码 修改音量js代码

详细内容

使用WebApiClientCore快速编写Api调用类

开发微信小程序或者网站后台是,难免要对接一些外部的API,传统调用是使用HttpClient或者WebClient,然而写起来相当繁琐! 为此老九写了个WebApiClient并且推出了.Net Core版本的WebApiClientCore,本文简单介绍如何使用: 1、安装包 install-package webapiclientcore install-package webapiclientcore.oauth 2、定义Api调用接口 3、配置Startup.cs 在Startup.cs中的ConfigureServices中添加注入: 4、Controller中调用 至此完成了百度卡证识别中的执照识别接口调用,需要的时候增加IBaiduApi里面的方法接口即可!

详细内容