Giter VIP home page Giter VIP logo

ncf's Introduction

NCF - NeuCharFramework

NeuCharFramework(NCF) 是一整套可用于构建基础项目的框架,包含了基础的缓存、数据库、模型、验证及配套管理后台,高度模块化,严格遵循 DDD 设计模式,具有高度的可扩展性。

当前 NCF 核心版本:0.14.4

当前 NCF 模板版本:0.3.1-beta3

Build Status

Notice

  1. NCF 由盛派(Senparc)团队经过多年优化迭代的自用系统底层框架 SenparcCore 升级而来,经历了 .NET 3.5/4.5 众多系统的实战检验,并最终移植到 .NET Core(同时支持 .NET 6 / .NET 8),目前已在众多系统中稳定运行。感谢大家一直以来的支持!
  2. 源码中已经附带文档模块,运行 NCF 并安装即可。

当前快速更新分支:Developer

我们欢迎第三方开源组件提供自己的解决方案,我们将会测试并集成到 NCF 中。

在线文档

https://www.ncf.pub/Docs

当前项目在线 Demo

https://www.ncf.pub

QQ 技术交流群

环境要求

  • Visual Studio 2019+(建议 2022)或 VS Code 最新版本

友情提示:2020年11月发布的 Visual Stuido 2019 v16.8 存在部分bug,暂时不建议升级到此版本。

  • NCF 默认支持 SQLite、MySQL、SQL Server 等数据库,也可自行实现更多数据库类型。
  • 如使用 SQL Server,最低支持版本为 2012

如何安装

第一步:打开解决方案

下载或同步本项目代码到本地后,打开 /src/NCF.sln 解决方案文件,即可看到 NCF 完整的模板项目:

第二步:确认 Senparc.Web 为启动项目

Senparc.Web 项目是用于启动 Web 站点的项目,确认已经为启动项目(加粗),如果没有,则点击右键,选择【设为启动项目】。

第三步:运行

点击顶部菜单【编译】>【开始执行(不调试)】,或快捷键 Ctrl/Command + F5

注意:默认运行的数据库为 SQL Server,如需更换其他数据库,请查看《使用多数据库》。

完成启动

稍等数秒后,即可完成 NCF Web 项目的启动。

首次运行

首次运行项目时,系统会对数据库等“基础设施”进行自动安装:

注意:默认运行的数据库为 SQL Server,如需更换其他数据库,请查看《使用多数据库》。

点击【立即安装】按钮:

阅读提示并点击确认,随后,即可看到安装成功的界面:

登录后即可进入管理员后台

待办事项:

  • 定制命名空间
  • 提供交流社区,包括但不仅限于问答网站QQ群、微信群、直播群。
  • 进一步完善的示例代码和文档。
  • 提供博客和视频教程(也欢迎开发者参与或发起)。
  • 完善 DDD 实践
  • 添加应用商店
  • 提供 CLI 命令行工具
  • 开源 NeuChar.com 中的微信功能模块,可使用独立模块集成。

License

Apache License Version 2.0

Copyright 2024 Suzhou Senparc Network Technology Co.,Ltd.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 
except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the 
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
either express or implied. See the License for the specific language governing permissions 
and limitations under the License.

Detail: https://github.com/NeuCharFramework/NcfPackageSources/blob/master/LICENSE

100% 开源,支持商用!

ncf's People

Contributors

felixj-senparc avatar francisfyk avatar jamloveu avatar janeconan avatar jdengid avatar jeffreysu avatar lanhao0 avatar laoyangcoder avatar lightshao avatar loganlan0 avatar qideqian avatar rodearz avatar sqlnice avatar tonwin618 avatar xuyang60 avatar zhao365845726 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ncf's Issues

修改管理员密码成功后无法登录,或者修改密码失败

1.在后台修改密码后无法登录,一直提示密码错误,调试发现是密码更新函数 UpdateObject() 调用 GetSHA512Password()函数时传入的usePasswordToken参数是false,但是初始创建和登录时此参数都是使用的 true,修改统一传递 true 参数可解决问题

627750b3ea6ef7f45ada10174883025

2.某些情况下,GetSHA512Password()函数返回的是使用GetHmacSha256()加密的密码,此时加密字符串长度是64位,加上固定字符串"g01",需要最少67位长度,但是数据库(SQLServer)里(SQLServer)Password字段长度是50。修改此字段长度可解决问题

e37ee3cf129a1226ed070e5a38568ca

a3b8d0a590fb6f899d358ba38382497

Xncf 模块管理和导航问题

  • Xncf 模块新增后,进入【模块管理】页面,点击【进入首页】,页面无法访问。

比如:Senparc.Xncf.Swagger 模块,页面操作如下:

1

2

  • Xncf 模块状态关闭时,页面中无法操作(符合预期),但实际的访问地址在浏览器中依然能访问。

3

NCF-Developer-front-DDD-Dapr-20220218的XNCF创建模块问题

用XNCF创建模块“执行成功”提示未显示正常对话框,如下图,不知道其他人是不是也一样呢

XNCF创建模块提示

模块创建完成后,新模块中的ApiAppService.cs文件中有三个命名空间没有自动引用,引起编译失败,需要自己手动添加引用再编译

模块1
三个命名空间:
using Senparc.CO2NET.WebApi;
using MyNcf.Xncf.MyApp.OHS.Local.PL;
using Senparc.Ncf.Core.Exceptions;

手动添加引用后重新编译解决方案成功,但运行项目又出现如下图的问题,“清理解决方案”1次后再运行项目恢复正常运行

模块2

sqlite启动时创建数据库失败

[07] 2022-02-08 11:13:08.0563 added Api path: /api/WeChat_OfficialAccount/MediaApi/UploadForeverVideoAsync
[07] 2022-02-08 11:13:08.0566 Api Task Count:16
[07] 2022-02-08 11:13:08.0623 create type: - WeChat_OfficialAccountController
[07] 2022-02-08 11:13:08.0624 ==== Finish BuildWebApi for WeChat_OfficialAccount / Total Time: 679 ms ====
[07] 2022-02-08 11:13:08.0626
[01] 2022-02-08 11:13:08.0653
[01] 2022-02-08 11:13:08.0653 Category Name | API Count| Cost Time | Average
[01] 2022-02-08 11:13:08.0655 --------------------------------------------------------------------------------
[01] 2022-02-08 11:13:08.0663 WeChat_MiniProgram | 146| 415.157ms | 2.844ms
[01] 2022-02-08 11:13:08.0664 WeChat_Open | 164| 414.4167ms | 2.527ms
[01] 2022-02-08 11:13:08.0665 WeChat_Work | 320| 553.8318ms | 1.731ms
[01] 2022-02-08 11:13:08.0669 Senparc.Xncf.DatabaseToolkit | 1| 105.9367ms | 105.937ms
[01] 2022-02-08 11:13:08.0685 WeChat_OfficialAccount | 776| 681.1814ms | 0.878ms
[01] 2022-02-08 11:13:08.0688 ================================================================================
[01] 2022-02-08 11:13:08.0715 Total | API Count:1407| Cost:807.6594ms |
[01] 2022-02-08 11:13:08.0716 Total Average Cost: 0.574 ms Task Count: 16
[01] 2022-02-08 11:13:08.0719
SenparcEntities 动态加载:Register | DbContextType:SystemServiceEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:DatabaseToolkitEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:XncfBuilderEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:WeixinSenparcEntities_Sqlite
SenparcEntitiesDbContextBase OnModelCreating:SystemServiceEntities_Sqlite
entity type: Senparc.Core.Models.AdminUserInfo
Hosting environment: Development
Content root path: C:\Users\Administrator\Desktop\NCF-Developer\src\Senparc.Web
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
SenparcEntitiesDbContextBase OnModelCreating:SenparcEntitiesMultiTenant
entity type: Senparc.Ncf.Core.Models.DataBaseModel.TenantInfo
NcfUninstallException from TenantMiddleware
SenparcEntities 动态加载:Register | DbContextType:SystemServiceEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:DatabaseToolkitEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:XncfBuilderEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:WeixinSenparcEntities_Sqlite
SenparcEntitiesDbContextBase OnModelCreating:SystemServiceEntities_Sqlite
entity type: Senparc.Core.Models.AdminUserInfo
NcfUninstallException from TenantMiddleware
进入安装程序,检测是否需要初始化
SenparcEntities 动态加载:Register | DbContextType:SystemServiceEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:DatabaseToolkitEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:XncfBuilderEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:WeixinSenparcEntities_Sqlite
SenparcEntitiesDbContextBase OnModelCreating:SystemServiceEntities_Sqlite
entity type: Senparc.Core.Models.AdminUserInfo
SenparcEntities 动态加载:Register | DbContextType:SystemServiceEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:DatabaseToolkitEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:XncfBuilderEntities_Sqlite
SenparcEntities 动态加载:Register | DbContextType:WeixinSenparcEntities_Sqlite
SenparcEntitiesDbContextBase OnModelCreating:SystemServiceEntities_Sqlite
entity type: Senparc.Core.Models.AdminUserInfo
entity type: Senparc.Core.Models.FeedBack
entity type: Senparc.Ncf.Core.Models.Account
entity type: Senparc.Ncf.Core.Models.AccountPayLog
entity type: Senparc.Ncf.Core.Models.DataBaseModel.SysButton
entity type: Senparc.Ncf.Core.Models.DataBaseModel.SysMenu
entity type: Senparc.Ncf.Core.Models.DataBaseModel.SysPermission
entity type: Senparc.Ncf.Core.Models.DataBaseModel.SysRole
entity type: Senparc.Ncf.Core.Models.DataBaseModel.SysRoleAdminUserInfo
entity type: Senparc.Ncf.Core.Models.DataBaseModel.TenantInfo
entity type: Senparc.Ncf.Core.Models.DataBaseModel.XncfModule
entity type: Senparc.Ncf.Core.Models.PointsLog
entity type: Senparc.Ncf.Core.Models.SystemConfig
entity type: Senparc.Xncf.DatabaseToolkit.DbConfig
entity type: Senparc.Xncf.WeixinManager.Models.MpAccount
entity type: Senparc.Xncf.WeixinManager.Models.UserTag
entity type: Senparc.Xncf.WeixinManager.Models.UserTag_WeixinUser
entity type: Senparc.Xncf.WeixinManager.Models.WeixinUser
entity type: Senparc.Xncf.XncfBuilder.Config
SQLite Error 1: 'no such table: TenantInfos'.
fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
An unhandled exception has occurred while executing the request.
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such table: TenantInfos'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements(Stopwatch timer)+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements(Stopwatch timer)+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(DbContext _, Boolean result, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable1.AsyncEnumerator.MoveNextAsync()
at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable1 asyncEnumerable, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable1 asyncEnumerable, CancellationToken cancellationToken)
at Senparc.Ncf.Repository.RepositoryBase1.GetFirstOrDefaultObjectAsync(Expression1 where, String[] includes)
at Senparc.Ncf.Service.ServiceBase1.GetObjectAsync(Expression1 where, String[] includes)
at Senparc.Ncf.Service.TenantInfoService.CreateOrUpdateTenantInfoAsync(CreateOrUpdate_TenantInfoDto createOrUpdate_TenantInfoDto, Boolean throwIfExisted)
at Senparc.Ncf.Service.TenantInfoService.CreateInitTenantInfoAsync(HttpContext httpContext)
at Senparc.Web.Pages.Install.IndexModel.OnGetAsync() in C:\Users\Administrator\Desktop\NCF-Developer\src\Senparc.Web\Pages\Install\Index.cshtml.cs:line 118
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.ExecutorFactory.GenericTaskHandlerMethod.Convert[T](Object taskAsObject)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.ExecutorFactory.GenericTaskHandlerMethod.Execute(Object receiver, Object[] arguments)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeHandlerMethodAsync()
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeNextPageFilterAsync()
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Rethrow(PageHandlerExecutedContext context)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeInnerFilterAsync()
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Senparc.Ncf.Service.MultiTenant.TenantMiddleware.InvokeAsync(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

后台新增管理员问题

后台添加新管理员账号“未赋角色”权限,直接用新管理员账号在后台登录出现找不到页面(404),
NCF01
然后直接在地址栏输入“https://localhost:44311/Admin/”打开,却可以打开后台默认首页
NCF02
首页的下面“功能模块”部分又显示了已安装的模块,然后点击“模块”下方的详细页面“按钮”也可以打开模块的详细页面
NCF03
没有相应“角色”权限的空账号又可以操作模块详细页面上的两个“功能”按钮哦
应该是页面权限没有配置到,之前有跟苏总提过,好像没有更新到,
空“角色”账号登录后在地址栏直接输入后台其他页面地址打开,都是出现找不到页面(404),没有其他提示,不知道是不是“故意”的,呵呵

安装过后重新拉取代码 启动报错

拉取代码后 启动时 OnModelCreating()中的base.OnModelCreating(modelBuilder);(58行)报错:
"内部异常 NcfUninstallException: TriedMatching 为false,推测系统未进行安装"。
经删除数据库后 重启启动可以正常启动。

docker build failed

[root@master201 Senparc.Web]# docker build -t ncf .
Sending build context to Docker daemon 29.56MB
Step 1/17 : FROM microsoft/aspnetcore:2.0 AS base
2.0: Pulling from microsoft/aspnetcore
55cbf04beb70: Pull complete
2ad9fb8b9d3d: Pull complete
7debd121b442: Pull complete
76fbad01d0bd: Pull complete
1cba46fa0c00: Pull complete
Digest: sha256:8bd7808981568a92b7f1d0aa4bab07ef811e6417898847d9caf698a4a788ab11
Status: Downloaded newer image for microsoft/aspnetcore:2.0
---> db030c19e94b
Step 2/17 : WORKDIR /app
---> Running in 15eb47da4bfd
Removing intermediate container 15eb47da4bfd
---> 1ef2b6863834
Step 3/17 : EXPOSE 80
---> Running in fdea09de6630
Removing intermediate container fdea09de6630
---> 91f286eec28e
Step 4/17 : FROM microsoft/aspnetcore-build:2.0 AS build
2.0: Pulling from microsoft/aspnetcore-build
55cbf04beb70: Already exists
1607093a898c: Pull complete
9a8ea045c926: Pull complete
d4eee24d4dac: Pull complete
9996a3dbf48f: Pull complete
e626b8d73a89: Pull complete
4d833e0fa218: Pull complete
1eebc8a262e7: Pull complete
4867c32ba582: Pull complete
c0ece037099c: Pull complete
Digest: sha256:ab861527a8485e7df91069e80cd7a94237c22995f13494c2cccc071b76e347f0
Status: Downloaded newer image for microsoft/aspnetcore-build:2.0
---> 06a6525397c2
Step 5/17 : WORKDIR /src
---> Running in 4ece2cccc655
Removing intermediate container 4ece2cccc655
---> 3b90570690c9
Step 6/17 : COPY Senparc.Core.sln ./
COPY failed: stat /var/lib/docker/tmp/docker-builder849824203/Senparc.Core.sln: no such file or directory

developer 分支update-database 报错

最新版developer分支,手动更新数据库,报如下错误:More than one DbContext was found. Specify which one to use. Use the '-Context' parameter for PowerShell commands and the '--context' parameter for dotnet commands.
我记得数据库连接字符串在Senparc.Web项目里啊

源码在调试模式报错

我将源代码克隆到本地后,直接调试(按F5)运行。报如下错误:
QQ图片20210327183718

当我使用非调试模式(ctrl+f5)一切正常。

烦请指导,谢谢!

获取管理员列表接口报错

升级到8.0后,在请求管理员列表接口Senparc.Areas.Admin/AdminUserInfoAppService/Areas.Admin_AdminUserInfoAppService.GetList时报错:
image

query参数:
image

报错提示:
image

参考文档,运行 NCF ; 未能执行成功

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> Senparc.Ncf.Core.NcfUninstallException: TriedMatching 为 false,推测系统未进行安装
at Senparc.Ncf.Core.MultiTenant.MultiTenantHelper.TryGetAndCheckRequestTenantInfo(IServiceProvider serviceProvider, String referenceMethod, DbContext dbContext)
at Senparc.Ncf.Core.Models.SenparcEntitiesDbContextBase.SetGlobalQuery[T](ModelBuilder builder)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Senparc.Ncf.Core.Models.SenparcEntitiesDbContextBase.OnModelCreating(ModelBuilder modelBuilder)
at Senparc.Ncf.Core.Models.SenparcEntitiesBase.OnModelCreating(ModelBuilder modelBuilder)
at Senparc.Core.Models.SenparcEntities.OnModelCreating(ModelBuilder modelBuilder) in E:\05_Senparc\NCF\src\Senparc.Core\Models\SenparcEntities.cs:line 58
at Microsoft.EntityFrameworkCore.Infrastructure.ModelCustomizer.Customize(ModelBuilder modelBuilder, DbContext context)
at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder, ModelDependencies modelDependencies)
at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.GetModel(DbContext context, IConventionSetBuilder conventionSetBuilder, ModelDependencies modelDependencies)
at Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()
at Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()

DB NCF 创建成功, 表没有创建
image

接口异常:/api/Senparc.Areas.Admin/ModuleAppservice/Areas.Admin_ModuleApService.GetunInstalledlistAsync

ncf 运行环境说明

  • ncf 数据库采用【postgres:15.1-alpine】镜像部署的 docker 环境;
  • 采用前后端分离方式启动运行。

触发异常操作说明

数据库、后端服务均启动成功运行后,再启动前端项目,点击菜单扩张管理/模块管理页面,接口报错。

ncf 相关异常信息

  • vue 前端管理系统(front-end\admin-main),点击扩展模块/模块管理菜单时,出现接口异常,如下:

1

  • 对应 back-end 项目中的 swagger 接口,点击调用接口耗时严重;

2

  • swagger 接口响应异常信息
System.NotSupportedException: Serialization and deserialization of 'System.Action`1[[AutoMapper.Profile, AutoMapper, Version=7.0.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005]]' instances are not supported. The unsupported member type is located on type 'System.Action`1[AutoMapper.Profile]'. Path: $.Data.AutoMapMappingConfigs.
 ---> System.NotSupportedException: Serialization and deserialization of 'System.Action`1[[AutoMapper.Profile, AutoMapper, Version=7.0.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005]]' instances are not supported.
   at System.Text.Json.Serialization.Converters.UnsupportedTypeConverter`1.Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Converters.IEnumerableDefaultConverter`2.OnWriteResume(Utf8JsonWriter writer, TCollection value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonCollectionConverter`2.OnTryWrite(Utf8JsonWriter writer, TCollection value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Converters.ListOfTConverter`2.OnWriteResume(Utf8JsonWriter writer, TCollection value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonCollectionConverter`2.OnTryWrite(Utf8JsonWriter writer, TCollection value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.WriteCore(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   --- End of inner exception stack trace ---
   at System.Text.Json.ThrowHelper.ThrowNotSupportedException(WriteStack& state, NotSupportedException ex)
   at System.Text.Json.Serialization.JsonConverter`1.WriteCore(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.Serialization.JsonConverter`1.WriteCoreAsObject(Utf8JsonWriter writer, Object value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.JsonSerializer.WriteCore[TValue](JsonConverter jsonConverter, Utf8JsonWriter writer, TValue& value, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.JsonSerializer.WriteStreamAsync[TValue](Stream utf8Json, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken)
   at System.Text.Json.JsonSerializer.WriteStreamAsync[TValue](Stream utf8Json, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken)
   at System.Text.Json.JsonSerializer.WriteStreamAsync[TValue](Stream utf8Json, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|30_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Senparc.Xncf.Tenant.OHS.Remote.TenantMiddleware.InvokeAsync(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

HEADERS
=======
Accept: application/json, text/plain, */*
Connection: close
Host: localhost:5000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.62
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOjEsIm5iZiI6MTY3MDI1Mzg5NywiZXhwIjoxNjcwNzkzODk3LCJpYXQiOjE2NzAyNTM4OTcsImlzcyI6Imh0dHBzOi8vbG9jYWxob3N0OjQ0MzExIiwiYXVkIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMTEifQ.flZzSdAlxSYJv1fQJSYvz2e9J5wZfzyP9yw3bJDQt_Q
Cookie: userInfo=%7B%22id%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22code%22%3A%220112222111%22%2C%22fullName%22%3A%22superadmin%22%2C%22userName%22%3A%22superadmin%22%2C%22ip%22%3A%22192.168.1.146%22%2C%22isExpire%22%3Afalse%2C%22loginTime%22%3A%222022-11-30%2020%3A17%3A41%22%2C%22nickName%22%3A%22superadmin%22%2C%22token%22%3A%22MDY3OCs5NjY1ZWU1MTliNGQtYTYwYS02MDM0LWI0ZTgtODY3MzUyNGY%3D%22%2C%22extData%22%3A%22%22%2C%22productCode%22%3A%22MES%22%7D; redirectUrl=%2Fpps%2Fpps-entry%2FAssemblyShop; .AspNetCore.Antiforgery.nTsCt8sg9tA=CfDJ8LwPEyRAHkdAt0b1jNh6H_zSLNom3PS78Lrh73xG05etXUEzj7fjUqUDZlu4PC42B3vjL6XuEShT_Rn8wt4IhOAIi13Cjkc2dNZlb-WrjxfIx3f1cxu36Yl7cwNQzBk4vbvNAa0yrk8AXxcuBof6z84; .AspNetCore.NcfAdminAuthorizeScheme=CfDJ8LwPEyRAHkdAt0b1jNh6H_ygrzFoqXZDDi4qayfXqS7XbCIWByLmb4RTQNmVkU4wkX_2gMibgaKeh_xDXrzU5syJJ1qiR-FUd_eAehCKog5cLv4wGa9ZyOjeZbXVSPXXwC7I2rNuhEqCGmwL_nnOD1xxZ9aiifLNWelqdHgP633kXp0J1ZcJ_nDlOwPkLT2nn7bCBrAmbYAZOJBdna6cqe4Mve5l-DMoDzljAudPUemJMoRxpgCoOK3LAbaNpmaKv9dS1UslbTjWttmo7tXniFbjY7LANYvSLvagizJBf2Eoa0efShz3mcvHQPx0gkwhnlgggWdtX9K-KZbOIgYp8rCdXFddD34ziYPg6cadGgA1Y6og1-EJjLLndoDUVJX-dgKv-zuSyv4q8VP9QHri7vLt4J6tan6g2c2r_kHojrMli8GWuV1lszKBhU4vYSMnBMoVMopQjZu729RV9fk0L7RAe-l98rZnCur5zkrvfn1GnFCt01ts2wY_0W7VmT8UXYKfCDwzuMvb23Se4kcBsRJrZqsDf9bkB8XU8AvBWVvwt_qWhhkpV1Dfd-sFa_KZGw; Admin-Token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOjEsIm5iZiI6MTY3MDI1Mzg5NywiZXhwIjoxNjcwNzkzODk3LCJpYXQiOjE2NzAyNTM4OTcsImlzcyI6Imh0dHBzOi8vbG9jYWxob3N0OjQ0MzExIiwiYXVkIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMTEifQ.flZzSdAlxSYJv1fQJSYvz2e9J5wZfzyP9yw3bJDQt_Q; Admin-Role=[%22administrator%22]
Referer: http://localhost:9527/
x-forwarded-host: localhost:9527
x-forwarded-proto: http
x-forwarded-port: 9527
x-forwarded-for: 127.0.0.1
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-origin
sec-ch-ua-platform: "Windows"
sec-ch-ua-mobile: ?0
sec-ch-ua: "Microsoft Edge";v="107", "Chromium";v="107", "Not=A?Brand";v="24"
  • back-end 项目控制台异常信息
warn: Microsoft.AspNetCore.Mvc.Formatters.XmlSerializerOutputFormatter[1]
      An error occurred while trying to create an XmlSerializer for the type 'Senparc.Ncf.Core.AppServices.AppResponseBase`1[[System.Collections.Generic.List`1[[Senparc.Areas.Admin.Domain.Dto.SystemConfigDto, Senparc.Areas.Admin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'.
      System.InvalidOperationException: There was an error reflecting type 'Senparc.Ncf.Core.AppServices.AppResponseBase`1[System.Collections.Generic.List`1[Senparc.Areas.Admin.Domain.Dto.SystemConfigDto]]'.
       ---> System.InvalidOperationException: There was an error reflecting property 'Data'.
       ---> System.InvalidOperationException: Member AppResponseBaseOfListOfSystemConfigDto.Data of type System.Collections.Generic.List`1[Senparc.Areas.Admin.Domain.Dto.SystemConfigDto] hides base class member AppResponseBase.Data of type System.Object. Use XmlElementAttribute or XmlAttributeAttribute to specify a new name.
         at System.Xml.Serialization.StructMapping.FindDeclaringMapping(MemberMapping member, StructMapping& declaringMapping, String parent)
         at System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
         --- End of inner exception stack trace ---
         at System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
         at System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns, Boolean openModel, XmlAttributes a, RecursionLimiter limiter)
         at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
         --- End of inner exception stack trace ---
         at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
         at System.Xml.Serialization.XmlReflectionImporter.ImportElement(TypeModel model, XmlRootAttribute root, String defaultNamespace, RecursionLimiter limiter)
         at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace)
         at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
         at System.Xml.Serialization.XmlSerializer..ctor(Type type)
         at Microsoft.AspNetCore.Mvc.Formatters.XmlSerializerOutputFormatter.CreateSerializer(Type type)
warn: Microsoft.AspNetCore.Mvc.Formatters.XmlSerializerOutputFormatter[1]
      An error occurred while trying to create an XmlSerializer for the type 'Senparc.Ncf.Core.AppServices.AppResponseBase`1[[Senparc.Areas.Admin.Domain.Dto.SystemConfigDto, Senparc.Areas.Admin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'.
      System.InvalidOperationException: There was an error reflecting type 'Senparc.Ncf.Core.AppServices.AppResponseBase`1[Senparc.Areas.Admin.Domain.Dto.SystemConfigDto]'.
       ---> System.InvalidOperationException: There was an error reflecting property 'Data'.
       ---> System.InvalidOperationException: Member AppResponseBaseOfSystemConfigDto.Data of type Senparc.Areas.Admin.Domain.Dto.SystemConfigDto hides base class member AppResponseBase.Data of type System.Object. Use XmlElementAttribute or XmlAttributeAttribute to specify a new name.
         at System.Xml.Serialization.StructMapping.FindDeclaringMapping(MemberMapping member, StructMapping& declaringMapping, String parent)
         at System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
         --- End of inner exception stack trace ---
         at System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
         at System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns, Boolean openModel, XmlAttributes a, RecursionLimiter limiter)
         at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
         --- End of inner exception stack trace ---
         at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
         at System.Xml.Serialization.XmlReflectionImporter.ImportElement(TypeModel model, XmlRootAttribute root, String defaultNamespace, RecursionLimiter limiter)
         at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace)
         at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
         at System.Xml.Serialization.XmlSerializer..ctor(Type type)
         at Microsoft.AspNetCore.Mvc.Formatters.XmlSerializerOutputFormatter.CreateSerializer(Type type)
         NcfUninstallException from TenantMiddleware
  • 数据库【postgres:15.1-alpine】,异常日志信息
2022-12-05 23:27:44 2022-12-05 15:27:44.214 UTC [338] ERROR:  relation "TenantInfos" does not exist at character 140
2022-12-05 23:27:44 2022-12-05 15:27:44.214 UTC [338] STATEMENT:  SELECT t."Id", t."AddTime", t."AdminRemark", t."Enable", t."Flag", t."Guid", t."LastUpdateTime", t."Name", t."Remark", t."TenantKey"
2022-12-05 23:27:44 FROM "TenantInfos" AS t
2022-12-05 23:27:44 WHERE NOT (t."Flag") AND t."Enable"
2022-12-05 23:29:17 2022-12-05 15:29:17.265 UTC [48] LOG:  checkpoint starting: time
2022-12-05 23:29:22 2022-12-05 15:29:22.365 UTC [48] LOG:  checkpoint complete: wrote 50 buffers (0.3%); 0 WAL file(s) added, 0 removed, 0 recycled; write=5.012 s, sync=0.038 s, total=5.100 s; sync files=38, longest=0.007 s, average=0.001 s; distance=197 kB, estimate=3151 kB

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.