是否有任何方法可以获取有关Swashbuckle / Swagger错误的堆栈跟踪或内部异常?在某个时候,它停止工作了。我不确定是否是从.Net Core 2.0升级到2.1的时间,但是我很确定在那之后它仍然可以工作。当我导航到myapidomain / swagger / index.html时,出现此错误:
这不是很有帮助。它大约在2个星期前就开始运作了……我没有更改任何Swagger配置。与以往一样:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Version = "v1",
Title = "My.API",
Description = "Test"
});
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
else
app.UseHsts();
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "PropWorx API V1");
});
...
}
我在ASP.Net Core 2.1 Web API上使用Swashbuckle.AspNetCore 3.0.0。
答案 0 :(得分:9)
同意UI调试不是真正有用,但是可以通过打开浏览器的调试工具(例如Chrome上的F12),刷新/swagger
端点,然后检查{ {1}}有效负载-这是XHR请求,将失败,并显示swagger.json
状态码。
(我建议在一个大项目中为链接添加书签,以便将来您可以直接转到json文件,例如500
)
例如在以下人为错误中,我在两种方法之间重复了相同的路由:
https://MyHost/swagger/v1/swagger.json
哪个会产生错误:
您现在应该可以找到并修复它。
答案 1 :(得分:0)
我今天遇到了这个问题,并尝试了很多解决方法,您必须在C#控制器代码中的[http]标签之前删除所有[Route],例如以下代码 例如:
[Route("~/api/getAll")]
[HttpGet]
public ActionResult<List<asteriksModel>>GetAll()
{
return _context.asterList.ToList();
}
您的路线代码必须是这样
[HttpGet]
public ActionResult<List<asteriksModel>>GetAll()
{
return _context.asterList.ToList();
}
在我的项目中,它工作正常,
答案 2 :(得分:0)
如果您的api具有相同的两个或多个ssh-copy-id
,则无法正常工作。
您应该指定[HttpGet],[HttpGet]
[HttpGet ("{id}")]
答案 3 :(得分:0)
我发现SwaggerFunctions需要由Anonymous来完成Swagger / UI。
public static class SwaggerFunctions
{
[SwaggerIgnore]
[FunctionName("Swagger")]
public static Task<HttpResponseMessage> Swagger(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "swagger/json")]
HttpRequestMessage req,
[SwashBuckleClient] ISwashBuckleClient swashBuckleClient)
{
return Task.FromResult(swashBuckleClient.CreateSwaggerDocumentResponse(req));
}
[SwaggerIgnore]
[FunctionName("SwaggerUi")]
public static Task<HttpResponseMessage> SwaggerUi(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "swagger/ui")]
HttpRequestMessage req,
[SwashBuckleClient] ISwashBuckleClient swashBuckleClient)
{
return Task.FromResult(swashBuckleClient.CreateSwaggerUIResponse(req, "swagger/json"));
}
}