HEx*_*xit 6 asp.net-web-api swagger swashbuckle
我正在使用 asp.net 5
我有两个嵌套的模型类,两个内部类都被命名Command
public class EditModel
{
public class Command
{
public int Id { get; set; }
public string Info { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
和
public class CreateModel
{
public class Command
{
public int Id { get; set; }
public string Info { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器类中有两个方法
[HttpPost]
public IActionResult PutData(CreateModel.Command model)
{
return Ok();
}
[HttpPut]
public IActionResult PostData(EditModel.Command model)
{
return Ok();
}
Run Code Online (Sandbox Code Playgroud)
由于对于 Put 和 Post 的查询我都使用嵌套类 name Command,Swagger 将返回以下错误
执行请求时发生未处理的异常。Swashbuckle.AspNetCore.SwaggerGen.SwaggerGeneratorException:操作的冲突方法/路径组合“PUT Test” - TestSwagger.Controllers.TestController.PutData (TestSwagger)、TestSwagger.Controllers.TestController.PostData (TestSwagger)。对于 Swagger/OpenAPI 3.0,操作需要独特的方法/路径组合。使用 ConflictingActionsResolver 作为 Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GenerateOperations(IEnumerable
1 apiDescriptions, SchemaRepository schemaRepository) at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GeneratePaths(IEnumerable1 apiDescriptions, SchemaRepository schemaRepository) 的解决方法,Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwagger(String documentName, String host, String basePath) 位于 Swashbuckle.AspNetCore.Swagger。 SwaggerMiddleware.Invoke(HttpContext httpContext,ISwaggerProvider swaggerProvider)位于 Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
如果我将命令模型名称之一更改为不同的名称,Swagger 将起作用。然而,我相信这个嵌套类模型名称是合法的,并且也应该与 swagger 一起使用。如果有办法解决这个问题。谢谢
HEx*_*xit 10
通过增加c.CustomSchemaIds(x => x.FullName);
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "TestSwagger", Version = "v1" });
c.CustomSchemaIds(x => x.FullName);
});
Run Code Online (Sandbox Code Playgroud)
解决了schemaId冲突。感谢这个问题
| 归档时间: |
|
| 查看次数: |
3077 次 |
| 最近记录: |