【发布时间】:2018-10-16 23:02:10
【问题描述】:
我开发了一个 ASP.NET Core 2 应用程序并包含 Swagger。一切正常,直到我引入了一个没有明确定义 HTTP 操作的方法:
public class ErrorController : Controller
{
[Route("/error")]
public IActionResult Index()
{
return StatusCode(500, new Error("Internal error."));
}
}
当我使用这种方法启动应用程序时,出现以下消息:
未能加载 API 定义。
错误
获取错误内部服务器错误/swagger/v1/swagger.json
只要我明确设置例如[HttpGet] 错误消失。问题是,我需要这个方法来触发所有可能的 HTTP 操作。
当然,我可以明确指定所有操作,但我觉得 Swagger 应该能够正确处理。
为什么 Swagger 会这样?
有什么可以使用的配置吗?
【问题讨论】:
-
'我需要这个方法来触发所有可能的 HTTP 操作'为什么你需要支持所有方法,而不仅仅是 GET?
-
你能分享一下你的 Swashbuckle 配置吗?
-
@Set 在这种情况下,
Error端点用作异常处理程序。根据请求的 HTTP 操作,调用Error端点上的相应操作。 -
@HelderSepu 配置非常简单:
services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "My Service", Version = "v1" }); }); app.UseSwagger(c => { c.PreSerializeFilters.Add((swagger, httpReq) => swagger.Host = httpReq.Host.Value); }); app.UseSwaggerUI(c => { c.RoutePrefix = "swagger"; // serve the UI at root c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs"); }); -
我设法重现了您的问题,看起来像 Swashbuckle.AspNetCore 中的错误,
ResolveConflictingActions应该可以工作
标签: c# asp.net-core swagger swashbuckle