swagger swashbuckle不支持嵌套类作为操作方法参数



我使用的是asp.net 5

我有两个嵌套的模型类,两个内部类都命名为Command

public class EditModel
{
public class Command
{
public int Id { get; set; }
public string Info { get; set; }
}
}

public class CreateModel
{
public class Command
{
public int Id { get; set; }
public string Info { get; set; }
}
}

在我的控制器类中有两种方法

[HttpPost]
public IActionResult PutData(CreateModel.Command model)
{
return Ok();
}
[HttpPut]
public IActionResult PostData(EditModel.Command model)
{
return Ok();
}

由于对于Put和Post的查询,我使用的嵌套类都是名称Command,Swagger将返回以下错误

执行请求时发生未处理的异常。Swashbuckle.AspNetCore.SwakerGen.SwakerGeneratorException:冲突的方法/路径组合";PUT测试";用于操作-测试Swagger.Controllers.TestController.PutData(TestSwagger(、TestSwagger.Controllers.TestController.PostData(TestSwagger(。操作需要唯一的方法/路径组合Swagger/OpenAPI 3.0。使用冲突操作解决方案作为解决方法位于Swashfleck.AspNetCore.SwaggerGen.SwaggerGenerator.GenerateOperations(IEnumerable1 apiDescriptions, SchemaRepository schemaRepository) at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GeneratePaths(IEnumerable1apiDescriptions,SchemaRepository SchemaRepository(位于Swashfleck.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwagger(字符串documentName,字符串主机,字符串基路径(位于Swashfleck.AspNetCore.Swagger.SwaggerMiddleware.IInvoke(HttpContexthttpContext,ISwakerProvider swaggerProvider(位于Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.IInvoke(HttpContext上下文(

如果我将其中一个命令模型名称更改为其他名称,Swagger将起作用。然而,我相信这个嵌套类模型名称是合法的,也应该与swagger一起使用。如果有办法解决这个问题的话。感谢

通过添加c.CustomSchemaIds(x => x.FullName);

services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "TestSwagger", Version = "v1" });
c.CustomSchemaIds(x => x.FullName);
});

解决了计划和冲突。感谢这个问题

最新更新