Asp.net web api swagger Swashback不支持将嵌套类作为操作方法参数

Asp.net web api swagger Swashback不支持将嵌套类作为操作方法参数,asp.net-web-api,swagger,swashbuckle,Asp.net Web Api,Swagger,Swashbuckle,我正在使用asp.NET5 我有两个模型类,它们是嵌套的,两个内部类都命名为Command 及 在我的控制器类中,有两个方法 [HttpPost] public IActionResult PutData(CreateModel.Command model) { return Ok(); } [HttpPut] public IActionResult PostData(EditModel.Command model) {

我正在使用asp.NET5

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

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

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

    [HttpPut]
    public IActionResult PostData(EditModel.Command model)
    {
        return Ok();
    }
因为对于Put和Post的查询,我都使用嵌套类ALTHE name命令,所以Swagger将返回以下错误

执行请求时发生未经处理的异常。 Swashbuckle.AspNetCore.swagggerGen.swagggerGeneratorException:操作的冲突方法/路径组合放置测试- TestSwagger.Controllers.TestController.PutData TestSwagger,TestSwagger.Controllers.TestController.PostData 大摇大摆。操作需要一个唯一的方法/路径组合 Swagger/OpenAPI 3.0。使用ConflictingActionsResolver作为解决方法 在Swashback.AspNetCore.SwaggerGen.SwaggerGenerator.GenerateOperationsIEnumerable1 APIRescriptions中,SchemaRepository SchemaRepository在Swashback.AspNetCore.SwaggerGen.SwaggerGenerator.generatePath中是可计算的1 API描述,SchemaRepository SchemaRepository 在swashback.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwaggerString documentName、字符串主机、字符串基路径 在swashback.AspNetCore.Swagger.SwaggerMiddleware.InvokeHttpContext httpContext,ISwaggerProvider-swaggerProvider 位于Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.InvokeHttpContext 上下文

如果我将其中一个命令模型名称更改为其他名称,那么“招摇过市”将起作用。 然而,我相信这个嵌套的类模型名称是合法的,并且应该与swagger一起使用。如果有办法解决这个问题。通过添加c.CustomSchemaIdsx=>x.FullName来感谢

解决了这场冲突。由于

添加了c.CustomSchemaIdsx=>x.FullName


解决了这场冲突。由于

是,这很奇怪,参数的类型应该不重要,错误是方法/路径组合冲突。是否定义了自定义路径?@HelderSepulveda我没有定义自定义路径。所以,Put和Post都有相同的路径。我刚刚从VisualStudio创建了一个新项目,并选择了WebAPI.NET5模板。然后添加了两个模型类,并在控制器中添加了Put和Post操作。我刚刚用我的家用计算机创建了具有相同模型和操作的新项目。我相信一定有不同的地方。斯威格给我一个不同的错误信息。System.InvalidOperationException:无法对类型$TestSwagger.EditModel+命令使用schemaId$命令。相同的schemaId已经用于$TestSwagger.CreateModel+命令类型,此错误消息更有意义。然而,swagger仍然应该允许嵌套参数用于具有相同内部类名的两个不同操作。2015年出现了一个问题,但刚刚结束。是的,这很奇怪,参数的类型应该不重要,错误是方法/路径组合冲突。是否定义了自定义路径?@HelderSepulveda我没有定义自定义路径。所以,Put和Post都有相同的路径。我刚刚从VisualStudio创建了一个新项目,并选择了WebAPI.NET5模板。然后添加了两个模型类,并在控制器中添加了Put和Post操作。我刚刚用我的家用计算机创建了具有相同模型和操作的新项目。我相信一定有不同的地方。斯威格给我一个不同的错误信息。System.InvalidOperationException:无法对类型$TestSwagger.EditModel+命令使用schemaId$命令。相同的schemaId已经用于$TestSwagger.CreateModel+命令类型,此错误消息更有意义。然而,swagger仍然应该允许嵌套参数用于具有相同内部类名的两个不同操作
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();
    }
services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "TestSwagger", Version = "v1" });
                c.CustomSchemaIds(x => x.FullName);
            });