• 2022年11月2日

.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配置。

详细内容

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。可以剩下我们不少的工作。

详细内容

使用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里面的方法接口即可!

详细内容

阿里云函数计算(FC)对文件处理的支持情况

开发查标宝这个商标查询微信小程序的商标代理委托书生成工具时,需要读取模板文件内容,替换标签再将内容存储为一个文件到静态文件目录中,再将该文件的URL返回给商标注册代理或者商标注册人下载。 开发完,本地调试可运行无bug后,照例将这个.Net 6开发的WebApi部署到阿里云的函数计算FC上,结果出现了500错误,查看阿里云函数计算的日志后,发现记录如下: 红色标记为模板文件的路径,保存再wwwroot这个静态文件目录,错误的含义就是无法找到指定路径的模板文件。 经过检查分析后,个人认为是阿里云的函数计算产品偏向于执行承载计算能力,在用户调用计算函数时,系统将要指定计算的代码复制到临时目录(/code/),执行完之后清空临时目录,所以这个模板文件也就无法找到了。 最终只能将webapi转成.Net 3.1然后部署到西部数码的.Net空间中!

详细内容

SqlSugar的GetList时提示Operand should contain 1 column(s)

给魔码挪车小程序写webapi某个功能时,写了如下代码: return base.GetList(it=>ids.Length>0 && SqlFunc.ContainArray(ids,it.Id)) 报错:Operand should contain 1 column(s) 经百度,提示是in子查询时出现了2个字段(in (select id,true from [xxx] where ….)) 所以上面修改为: return base.GetList(it=> SqlFunc.ContainArray(ids,it.Id)) 问题解决

详细内容

sqlsugar读取数据出错“实体与表映射出错。”

使用.Net6+SqlSugar编写一个微信小程序的WebApi,其中一个类的写数据到数据正常,但是在读取的时候出现如下错误: 想不通写数据没问题,但是读数据实例化对象却失败了,最后排查发现是字段类型不一致导致的。 类某个属性定义为long类型,但是数据库该映射字段则是varchar字符型,所以导致读取的时候无法直接将字符串转为long类型的属性值。 修改数据库字段数据类型或者类属性类型即可!

详细内容

小时:分钟 格式的正则表达式

写微信小程序时需要对输入时间格式进行验证,下面的正则表达式是代表 小时:分钟(输入范围:00:00-23:59): ‘^(([01]{1}[0-9]{1})|(2[0-3]{1}){1}):([0-5]{1}[0-9]{1})$’

详细内容