后端【升级】:更新所有后端组件到最新版本,调整initq消息队列的使用方法,调整skit微信交互组件的使用方法。

This commit is contained in:
大灰灰
2024-10-28 10:57:43 +08:00
parent 085a0b1334
commit 0d20117bf7
18 changed files with 88 additions and 91 deletions

View File

@@ -7,7 +7,7 @@
<ItemGroup>
<PackageReference Include="CSRedisCore" Version="3.8.803" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.1" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.36.0" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.5.0" />
<PackageReference Include="StackExchange.Redis" Version="2.8.16" />
</ItemGroup>

View File

@@ -48,7 +48,7 @@
<ItemGroup>
<PackageReference Include="DotLiquid" Version="2.2.692" />
<PackageReference Include="sqlSugarCore" Version="5.1.4.169" />
<PackageReference Include="sqlSugarCore" Version="5.1.4.170" />
</ItemGroup>
<ItemGroup>

View File

@@ -1,9 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using CoreCms.Net.Configuration;
using CoreCms.Net.RedisMQ;
using InitQ;
using Microsoft.Extensions.DependencyInjection;
using SqlSugar.Extensions;
namespace CoreCms.Net.Core.Config
{
@@ -61,6 +63,21 @@ namespace CoreCms.Net.Core.Config
{
if (services == null) throw new ArgumentNullException(nameof(services));
var dbIndex = 0;
var ConnectionString = AppSettingsConstVars.RedisConfigConnectionString;
if (!string.IsNullOrEmpty(ConnectionString))
{
var arr = ConnectionString.ToLower().Split(',');
if (arr.Length > 1)
{
var defaultDataBaseStr = arr.FirstOrDefault(p => p.Contains("defaultdatabase"));
if (!string.IsNullOrEmpty(defaultDataBaseStr))
{
dbIndex = defaultDataBaseStr.Split('=').LastOrDefault("0").ObjToInt(0);
}
}
}
services.AddInitQ(m =>
{
//没消息时挂起时长(毫秒)
@@ -77,6 +94,8 @@ namespace CoreCms.Net.Core.Config
};
//显示日志
m.ShowLog = false;
//新增自定redis驱动器
m.DbIndex = dbIndex;
});
}

View File

@@ -11,21 +11,21 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="10.0.0" />
<PackageReference Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
<PackageReference Include="Castle.Core" Version="5.1.1" />
<PackageReference Include="Hangfire" Version="1.8.14" />
<PackageReference Include="Hangfire.AspNetCore" Version="1.8.14" />
<PackageReference Include="Hangfire.Core" Version="1.8.14" />
<PackageReference Include="Hangfire" Version="1.8.15" />
<PackageReference Include="Hangfire.AspNetCore" Version="1.8.15" />
<PackageReference Include="Hangfire.Core" Version="1.8.15" />
<PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" />
<PackageReference Include="Hangfire.MySqlStorage" Version="2.0.3" />
<PackageReference Include="Hangfire.Redis.StackExchange" Version="1.9.3" />
<PackageReference Include="InitQ" Version="1.0.0.18" />
<PackageReference Include="InitQ" Version="1.0.0.19" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.2" />
<PackageReference Include="Microsoft.OpenApi" Version="1.6.22" />
<PackageReference Include="SqlSugar.IOC" Version="2.0.0" />
<PackageReference Include="sqlSugarCore" Version="5.1.4.169" />
<PackageReference Include="sqlSugarCore" Version="5.1.4.170" />
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="8.0.2" />
</ItemGroup>

View File

@@ -7,7 +7,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NLog" Version="5.2.7" />
<PackageReference Include="NLog" Version="5.3.4" />
</ItemGroup>
<ItemGroup>

View File

@@ -8,8 +8,8 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Options" Version="8.0.2" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.36.0" />
<PackageReference Include="sqlSugarCore" Version="5.1.4.169" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.5.0" />
<PackageReference Include="sqlSugarCore" Version="5.1.4.170" />
</ItemGroup>
<ItemGroup>

View File

@@ -7,8 +7,8 @@
<ItemGroup>
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.1.4" />
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.1.4" />
<PackageReference Include="InitQ" Version="1.0.0.18" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.36.0" />
<PackageReference Include="InitQ" Version="1.0.0.19" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.5.0" />
</ItemGroup>
<ItemGroup>

View File

@@ -5,12 +5,12 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AlibabaCloud.SDK.Dysmsapi20170525" Version="3.0.0" />
<PackageReference Include="AlibabaCloud.SDK.Dysmsapi20170525" Version="3.1.0" />
<PackageReference Include="AlipaySDKNet.Standard" Version="4.9.296" />
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" />
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.1.4" />
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.1.4" />
<PackageReference Include="Flurl.Http" Version="3.2.4" />
<PackageReference Include="Flurl.Http" Version="4.0.2" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Options" Version="8.0.2" />
<PackageReference Include="Qiniu" Version="8.6.0" />

View File

@@ -232,7 +232,7 @@ namespace CoreCms.Net.Services
var response = await client.ExecuteWxaGetWxaCodeUnlimitAsync(request);
if (response.IsSuccessful())
{
ms = new MemoryStream(response.RawBytes);
ms = new MemoryStream(response.GetRawBytes());
}
else
{
@@ -348,7 +348,7 @@ namespace CoreCms.Net.Services
}
else
{
ms = new MemoryStream(response.RawBytes);
ms = new MemoryStream(response.GetRawBytes());
}
//QrCode 根目录

View File

@@ -5,7 +5,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Hangfire" Version="1.8.14" />
<PackageReference Include="Hangfire" Version="1.8.15" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.2" />
</ItemGroup>

View File

@@ -72,7 +72,7 @@ namespace CoreCms.Net.Task
createTime = DateTime.Now,
isSuccess = false,
name = "定时刷新获取微信AccessToken",
parameters = $"刷新 AppId 为 {_weChatOptions.WeiXinAppId} 微信 AccessToken 失败(状态码:{response.RawStatus}错误代码:{response.ErrorCode},错误描述:{response.ErrorMessage})。"
parameters = $"刷新 AppId 为 {_weChatOptions.WeiXinAppId} 微信 AccessToken 失败(错误代码:{response.ErrorCode},错误描述:{response.ErrorMessage})。"
};
await _taskLogServices.InsertAsync(log);
}
@@ -208,7 +208,7 @@ namespace CoreCms.Net.Task
createTime = DateTime.Now,
isSuccess = false,
name = "定时刷新获取微信AccessToken",
parameters = $"刷新 AppId 为 {_weChatOptions.WeiXinAppId} 微信 AccessToken 失败(状态码:{response.RawStatus}错误代码:{response.ErrorCode},错误描述:{response.ErrorMessage})。"
parameters = $"刷新 AppId 为 {_weChatOptions.WeiXinAppId} 微信 AccessToken 失败(错误代码:{response.ErrorCode},错误描述:{response.ErrorMessage})。"
};
await _taskLogServices.InsertAsync(log);
}

View File

@@ -5,9 +5,9 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Autofac" Version="7.1.0" />
<PackageReference Include="Autofac" Version="8.1.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NPOI" Version="2.6.2" />
<PackageReference Include="NPOI" Version="2.7.1" />
<PackageReference Include="ToolGood.Words" Version="3.1.0" />
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
</ItemGroup>

View File

@@ -9,7 +9,7 @@
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Options" Version="8.0.2" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.36.0" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.5.0" />
</ItemGroup>
<ItemGroup>

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
@@ -22,8 +23,6 @@ namespace CoreCms.Net.WeChat.Service.HttpClients
{
_httpClientFactory = httpClientFactory;
_weChatOptions = weChatOptions.Value;
FlurlHttp.GlobalSettings.FlurlClientFactory = new DelegatingFlurlClientFactory(_httpClientFactory);
}
/// <summary>
@@ -35,16 +34,17 @@ namespace CoreCms.Net.WeChat.Service.HttpClients
if (string.IsNullOrEmpty(_weChatOptions.WeiXinAppId) || string.IsNullOrEmpty(_weChatOptions.WeiXinAppSecret))
throw new Exception("未在配置项中找到微信公众号配置讯息。");
var wechatApiClient = new WechatApiClient(new WechatApiClientOptions()
var wechatApiClientOptions = new WechatApiClientOptions()
{
AppId = _weChatOptions.WeiXinAppId,
AppSecret = _weChatOptions.WeiXinAppSecret,
});
PushEncodingAESKey = _weChatOptions.WeiXinEncodingAesKey,
PushToken = _weChatOptions.WeiXinToken
};
wechatApiClient.Configure(settings =>
{
settings.JsonSerializer = new FlurlNewtonsoftJsonSerializer();
});
var wechatApiClient = WechatApiClientBuilder.Create(wechatApiClientOptions)
.UseHttpClient(_httpClientFactory.CreateClient(), disposeClient: false)
.Build();
return wechatApiClient;
}
@@ -58,41 +58,19 @@ namespace CoreCms.Net.WeChat.Service.HttpClients
if (string.IsNullOrEmpty(_weChatOptions.WxOpenAppId) || string.IsNullOrEmpty(_weChatOptions.WxOpenAppSecret))
throw new Exception("未在配置项中找到微信小程序配置讯息。");
var WechatApiClient = new WechatApiClient(new WechatApiClientOptions()
var wechatApiClientOptions = new WechatApiClientOptions()
{
AppId = _weChatOptions.WxOpenAppId,
AppSecret = _weChatOptions.WxOpenAppSecret
});
AppSecret = _weChatOptions.WxOpenAppSecret,
PushEncodingAESKey = _weChatOptions.WxOpenEncodingAESKey,
PushToken = _weChatOptions.WxOpenToken
};
WechatApiClient.Configure(settings =>
{
settings.JsonSerializer = new FlurlNewtonsoftJsonSerializer();
});
var wechatApiClient = WechatApiClientBuilder.Create(wechatApiClientOptions)
.UseHttpClient(_httpClientFactory.CreateClient(), disposeClient: false)
.Build();
return WechatApiClient;
}
}
public partial class WeChatApiHttpClientFactory
{
internal class DelegatingFlurlClientFactory : IFlurlClientFactory
{
private readonly System.Net.Http.IHttpClientFactory _httpClientFactory;
public DelegatingFlurlClientFactory(System.Net.Http.IHttpClientFactory httpClientFactory)
{
_httpClientFactory = httpClientFactory ?? throw new ArgumentNullException(nameof(httpClientFactory));
}
public IFlurlClient Get(Url url)
{
return new FlurlClient(_httpClientFactory.CreateClient(url.ToUri().Host));
}
public void Dispose()
{
// Do Nothing
}
return wechatApiClient;
}
}
}

View File

@@ -638,7 +638,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
var response = await client.ExecuteCgibinWxaappCreateWxaQrcodeAsync(request);
if (response.IsSuccessful())
{
var memStream = new MemoryStream(response.RawBytes);
var memStream = new MemoryStream(response.GetRawBytes());
string url = string.Empty;
if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.LocalStorage.ToString())
@@ -653,12 +653,12 @@ namespace CoreCms.Net.Web.Admin.Controllers
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QCloudOSS.ToString())
{
//上传到腾讯云OSS
url = _toolsServices.UpLoadBase64ForQCloudOSS(filesStorageOptions, response.RawBytes);
url = _toolsServices.UpLoadBase64ForQCloudOSS(filesStorageOptions, response.GetRawBytes());
}
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QiNiuKoDo.ToString())
{
//上传到七牛云kodo
url = _toolsServices.UpLoadBase64ForQiNiuKoDo(filesStorageOptions, response.RawBytes);
url = _toolsServices.UpLoadBase64ForQiNiuKoDo(filesStorageOptions, response.GetRawBytes());
}
var bl = !string.IsNullOrEmpty(url);
@@ -720,7 +720,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
var response = await client.ExecuteCgibinWxaappCreateWxaQrcodeAsync(request);
if (response.IsSuccessful())
{
var memStream = new MemoryStream(response.RawBytes);
var memStream = new MemoryStream(response.GetRawBytes());
string url = string.Empty;
if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.LocalStorage.ToString())
@@ -735,12 +735,12 @@ namespace CoreCms.Net.Web.Admin.Controllers
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QCloudOSS.ToString())
{
//上传到腾讯云OSS
url = _toolsServices.UpLoadBase64ForQCloudOSS(filesStorageOptions, response.RawBytes);
url = _toolsServices.UpLoadBase64ForQCloudOSS(filesStorageOptions, response.GetRawBytes());
}
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QiNiuKoDo.ToString())
{
//上传到七牛云kodo
url = _toolsServices.UpLoadBase64ForQiNiuKoDo(filesStorageOptions, response.RawBytes);
url = _toolsServices.UpLoadBase64ForQiNiuKoDo(filesStorageOptions, response.GetRawBytes());
}
var bl = !string.IsNullOrEmpty(url);
@@ -802,7 +802,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
var response = await client.ExecuteCgibinWxaappCreateWxaQrcodeAsync(request);
if (response.IsSuccessful())
{
var memStream = new MemoryStream(response.RawBytes);
var memStream = new MemoryStream(response.GetRawBytes());
string url = string.Empty;
if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.LocalStorage.ToString())
@@ -818,12 +818,12 @@ namespace CoreCms.Net.Web.Admin.Controllers
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QCloudOSS.ToString())
{
//上传到腾讯云OSS
url = _toolsServices.UpLoadBase64ForQCloudOSS(filesStorageOptions, response.RawBytes);
url = _toolsServices.UpLoadBase64ForQCloudOSS(filesStorageOptions, response.GetRawBytes());
}
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QiNiuKoDo.ToString())
{
//上传到七牛云kodo
url = _toolsServices.UpLoadBase64ForQiNiuKoDo(filesStorageOptions, response.RawBytes);
url = _toolsServices.UpLoadBase64ForQiNiuKoDo(filesStorageOptions, response.GetRawBytes());
}
var bl = !string.IsNullOrEmpty(url);
@@ -887,7 +887,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
var response = await client.ExecuteCgibinWxaappCreateWxaQrcodeAsync(request);
if (response.IsSuccessful())
{
var memStream = new MemoryStream(response.RawBytes);
var memStream = new MemoryStream(response.GetRawBytes());
string url = string.Empty;
if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.LocalStorage.ToString())
@@ -902,12 +902,12 @@ namespace CoreCms.Net.Web.Admin.Controllers
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QCloudOSS.ToString())
{
//上传到腾讯云OSS
url = _toolsServices.UpLoadBase64ForQCloudOSS(filesStorageOptions, response.RawBytes);
url = _toolsServices.UpLoadBase64ForQCloudOSS(filesStorageOptions, response.GetRawBytes());
}
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QiNiuKoDo.ToString())
{
//上传到七牛云kodo
url = _toolsServices.UpLoadBase64ForQiNiuKoDo(filesStorageOptions, response.RawBytes);
url = _toolsServices.UpLoadBase64ForQiNiuKoDo(filesStorageOptions, response.GetRawBytes());
}
var bl = !string.IsNullOrEmpty(url);
@@ -972,7 +972,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
var response = await client.ExecuteCgibinWxaappCreateWxaQrcodeAsync(request);
if (response.IsSuccessful())
{
var memStream = new MemoryStream(response.RawBytes);
var memStream = new MemoryStream(response.GetRawBytes());
string url = string.Empty;
if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.LocalStorage.ToString())
@@ -987,12 +987,12 @@ namespace CoreCms.Net.Web.Admin.Controllers
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QCloudOSS.ToString())
{
//上传到腾讯云OSS
url = _toolsServices.UpLoadBase64ForQCloudOSS(filesStorageOptions, response.RawBytes);
url = _toolsServices.UpLoadBase64ForQCloudOSS(filesStorageOptions, response.GetRawBytes());
}
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QiNiuKoDo.ToString())
{
//上传到七牛云kodo
url = _toolsServices.UpLoadBase64ForQiNiuKoDo(filesStorageOptions, response.RawBytes);
url = _toolsServices.UpLoadBase64ForQiNiuKoDo(filesStorageOptions, response.GetRawBytes());
}
var bl = !string.IsNullOrEmpty(url);

View File

@@ -47,12 +47,12 @@
<ItemGroup>
<PackageReference Include="AlipaySDKNet.Standard" Version="4.9.296" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="10.0.0" />
<PackageReference Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
<PackageReference Include="CSRedisCore" Version="3.8.803" />
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.1.4" />
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.1.4" />
<PackageReference Include="IdentityModel" Version="6.2.0" />
<PackageReference Include="IdentityModel" Version="7.0.0" />
<PackageReference Include="Microsoft.AspNetCore.ConcurrencyLimiter" Version="8.0.10" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.10" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.10" />
@@ -62,10 +62,10 @@
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="8.0.6" />
<PackageReference Include="MySql.Data" Version="9.1.0" />
<PackageReference Include="NETCore.Encrypt" Version="2.1.1" />
<PackageReference Include="NLog" Version="5.2.7" />
<PackageReference Include="NLog.Database" Version="5.2.7" />
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.7" />
<PackageReference Include="NPOI" Version="2.6.2" />
<PackageReference Include="NLog" Version="5.3.4" />
<PackageReference Include="NLog.Database" Version="5.3.4" />
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.14" />
<PackageReference Include="NPOI" Version="2.7.1" />
<PackageReference Include="Snowflake.Core" Version="2.0.0" />
<PackageReference Include="StackExchange.Redis" Version="2.8.16" />
<PackageReference Include="Tencent.QCloud.Cos.Sdk" Version="5.4.40" />

View File

@@ -747,7 +747,7 @@
</member>
<member name="M:CoreCms.Net.Web.Admin.Controllers.ToolsController.GetFormWxCode(CoreCms.Net.Model.FromBody.FMIntId)">
<summary>
后台生成小程序码
后台生成万能表单小程序码
</summary>
<returns></returns>
</member>

View File

@@ -51,14 +51,14 @@
<ItemGroup>
<PackageReference Include="AlipaySDKNet.Standard" Version="4.9.296" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="10.0.0" />
<PackageReference Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
<PackageReference Include="CSRedisCore" Version="3.8.803" />
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.1.4" />
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.1.4" />
<PackageReference Include="Hangfire" Version="1.8.14" />
<PackageReference Include="Hangfire.AspNetCore" Version="1.8.14" />
<PackageReference Include="Hangfire.Core" Version="1.8.14" />
<PackageReference Include="Hangfire" Version="1.8.15" />
<PackageReference Include="Hangfire.AspNetCore" Version="1.8.15" />
<PackageReference Include="Hangfire.Core" Version="1.8.15" />
<PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" />
<PackageReference Include="Hangfire.Redis.StackExchange" Version="1.9.3" />
<PackageReference Include="Microsoft.AspNetCore.ConcurrencyLimiter" Version="8.0.10" />
@@ -69,9 +69,9 @@
<PackageReference Include="MySql.Data" Version="9.1.0" />
<PackageReference Include="NETCore.Encrypt" Version="2.1.1" />
<PackageReference Include="Nito.AsyncEx" Version="5.1.2" />
<PackageReference Include="NLog" Version="5.2.7" />
<PackageReference Include="NLog.Database" Version="5.2.7" />
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.7" />
<PackageReference Include="NLog" Version="5.3.4" />
<PackageReference Include="NLog.Database" Version="5.3.4" />
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.14" />
<PackageReference Include="Snowflake.Core" Version="2.0.0" />
<PackageReference Include="StackExchange.Redis" Version="2.8.16" />
<PackageReference Include="Tencent.QCloud.Cos.Sdk" Version="5.4.40" />