我使用的是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(IEnumerable
1 apiDescriptions, SchemaRepository schemaRepository) at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GeneratePaths(IEnumerable
1apiDescriptions,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);
});
解决了计划和冲突。感谢这个问题