当我发布我的 Azure REST API 应用程序时,结果很奇怪
1)“所有”记录的获取方法按预期工作,生成如下:
public async Task<HttpOperationResponse<IList<DomainType>>> GetAllDomainObjectsWithOperationResponseAsync(...);
2) 对于Get by id
、Update
和方法,它是用Delete
而不是域对象生成的Create
object
async Task<HttpOperationResponse<object>> DeleteDomainObjectByIdWithOperationResponseAsync(..)
结果,当我使用此 Delete、Update、Create 和 GetById 方法时,服务无法正常工作。如果我手动替换object
为相应的域类型,它会按预期工作,但在每次服务发布后,都会重新创建错误的代码......
我尝试了 SwaggerConfig.cs 中的一些东西(IncludeParameterNamesInOperationIdFilter
例如启用),但在这种情况下似乎没有帮助。
关于造成这种情况以及如何处理的任何想法?
PS我注意到一些更不愉快的行为——比如生成DateTime
asDateTimeOffset?
和byte
as byte[]
,但我可以忍受。我不想定期战斗的是通过所有生成的代码将object
类型更改为适当的域类型 - 在这种情况下编译器无能为力......
编辑
根据@olydis 的评论,事实证明生成的 swagger 定义文件缺少 form 中的返回类型定义$ref, "#/definition/domain-type"
。
在MVA 课程中掌握 Azure 应用服务(模块 4。3:33 左右集成发现的演示)是生成的 swagger 定义文件的可见示例,并且存在这些类型定义。什么可能导致 Swashbuckle 不生成此信息?我有一个最新的 Swashbuckle 版本 5.xx 是否有 domain-type 必须满足的任何先决条件才能使 Swashbuckle 正确生成 Swagger 文件?
编辑#2
当前的解决方法
在生成 REST API 客户端之前手动编辑生成的 swagger 定义文件