AsyncCrudAppService 在提供 TCreateInput 和 TUpdateInput 时打破了 Swagger
AsyncCrudAppService Breaks Swagger When Providing TCreateInput and TUpdateInput
我最近使用 3.x 目标版本从 https://aspnetboilerplate.com/Templates 下载了一个单页 Web 应用程序 (Angular)。
我只是简单地添加了几个实体,然后开始按照此页面上的步骤操作 https://aspnetboilerplate.com/Pages/Documents/Application-Services
当我的应用程序服务 class 只是继承 AsyncCrudAppService 时,我获取、列出、更新和删除实体的效果确实很好,但是当它正在继承 AsyncCrudAppService,swagger 定义将不再加载。
GitHub 回购:https://github.com/woodman231/MyPhoneBooks
(目前不起作用,不会加载 Swagger 页面)。
我可以通过从
中删除 CreatePhoneBookInput 和 UpdatePhoneBookInput 来加载 swagger 页面
和
但是,我仍然无法使用此默认实现创建实体。有什么想法吗?
好的,我明白了。我还制作了一个 DIY 应用服务,一些与 DIY 应用服务关联的 DTO Class 名称与与自动化服务关联的 DTO Class 名称发生冲突。它是 .NET 中的 acceptable,因为它们位于不同的名称空间中,但是一旦配置了 swagger 定义,我假设存在相同 DTO 定义的多个实例。我检查了 AbpLogs table 但他们没有给我太多关于加载定义时内部服务器错误的细节。知道这一点肯定会有用。
我已经克隆了你的 repo 和 运行 它并且我找出了错误,首先我在评论中告诉你我验证了文本日志,它说了下一个:
System.InvalidOperationException: Can't use schemaId "$CreatePhoneBookInput" for type "$MyPhoneBooks.SimpleCrudAppServices.Dtos.CreatePhoneBookInput". The same schemaId is already used for type "$MyPhoneBooks.PhoneBooks.Dtos.CreatePhoneBookInput"
发生的事情是你在 SanokeCrudAppServices\Dtos
和 PhoneBooks\Dtos
中重复了这两个 类 UpdatePhoneBookInput
, CreatePhoneBookInput
两个文件夹中的 类 具有完全相同的名称,这就是问题所在,如果您在 swagger 定义将无错误加载的任何位置更改名称,我已经这样做了工作正常!
在其中一个地方更改名称,一切都会正常工作
就我个人而言,我不喜欢对 Create
使用不同的 Dto
,对我来说 Update
更容易使用一个 Dto
。
我最近使用 3.x 目标版本从 https://aspnetboilerplate.com/Templates 下载了一个单页 Web 应用程序 (Angular)。
我只是简单地添加了几个实体,然后开始按照此页面上的步骤操作 https://aspnetboilerplate.com/Pages/Documents/Application-Services
当我的应用程序服务 class 只是继承 AsyncCrudAppService
GitHub 回购:https://github.com/woodman231/MyPhoneBooks
(目前不起作用,不会加载 Swagger 页面)。
我可以通过从
中删除 CreatePhoneBookInput 和 UpdatePhoneBookInput 来加载 swagger 页面和
但是,我仍然无法使用此默认实现创建实体。有什么想法吗?
好的,我明白了。我还制作了一个 DIY 应用服务,一些与 DIY 应用服务关联的 DTO Class 名称与与自动化服务关联的 DTO Class 名称发生冲突。它是 .NET 中的 acceptable,因为它们位于不同的名称空间中,但是一旦配置了 swagger 定义,我假设存在相同 DTO 定义的多个实例。我检查了 AbpLogs table 但他们没有给我太多关于加载定义时内部服务器错误的细节。知道这一点肯定会有用。
我已经克隆了你的 repo 和 运行 它并且我找出了错误,首先我在评论中告诉你我验证了文本日志,它说了下一个:
System.InvalidOperationException: Can't use schemaId "$CreatePhoneBookInput" for type "$MyPhoneBooks.SimpleCrudAppServices.Dtos.CreatePhoneBookInput". The same schemaId is already used for type "$MyPhoneBooks.PhoneBooks.Dtos.CreatePhoneBookInput"
发生的事情是你在 SanokeCrudAppServices\Dtos
和 PhoneBooks\Dtos
UpdatePhoneBookInput
, CreatePhoneBookInput
两个文件夹中的 类 具有完全相同的名称,这就是问题所在,如果您在 swagger 定义将无错误加载的任何位置更改名称,我已经这样做了工作正常!
在其中一个地方更改名称,一切都会正常工作
就我个人而言,我不喜欢对 Create
使用不同的 Dto
,对我来说 Update
更容易使用一个 Dto
。