我开发了一个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 会出现这种行为?
是否有任何配置可供使用?
Error
端点用作异常处理程序。根据请求的HTTP操作,调用Error
端点上的相应操作。 - Ashservices.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"; // 在根目录下提供UI c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs"); });
- Ash