调试Swashbuckle错误-无法加载API定义 [英] Debugging Swashbuckle Error - Failed to load API Definition
问题描述
是否有任何方法可以获取有关Swashbuckle / Swagger错误的堆栈跟踪或内部异常?在某个时候,它停止工作了。我不确定是否是从.Net Core 2.0升级到2.1的时候,但是我很确定在那之后它仍然可以工作。当我导航到myapidomain / swagger / index.html时,出现以下错误:
Is there any way to get a stack trace or inner exceptions on Swashbuckle/Swagger errors? At some point, it stopped working. I'm not sure if it was when I upgraded from .Net Core 2.0 to 2.1, but I'm pretty sure it was still working after that. When I navigate to myapidomain/swagger/index.html I get this error:
这不是很有帮助。它大约在2周前就开始运作了……我没有更改任何Swagger配置。
Which is not very helpful. It was working 2 or so weeks ago... I didn't change any Swagger configuration. It's the same as it's always been:
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");
});
...
}
我正在使用Swashbuckle.AspNetCore 3.0。在ASP.Net Core 2.1 Web API上为0。
I'm using Swashbuckle.AspNetCore 3.0.0 on an ASP.Net Core 2.1 Web API.
推荐答案
同意UI调试不是真正有用,但是完整可以通过打开浏览器的调试工具(例如Chrome上的F12),刷新 / swagger
端点,然后检查 swagger来刮除异常跟踪。 json
有效负载-这是XHR请求,将失败,状态码为 500
。
Agree that the UI debugging isn't really useful, however the full exception trace can be scraped by opening up your browser's debugging tools (e.g. F12 on Chrome), refreshing your /swagger
endpoint, and then examining the swagger.json
payload - this is an XHR request which will fail with a 500
status code.
(我建议在一个大项目中为链接添加书签,以便将来可以直接转到json文件,例如 https://MyHost/swagger/v1/swagger.json
)
(I would suggest on a big project that you bookmark the link, so that in future you can just go straight to the json file, e.g. https://MyHost/swagger/v1/swagger.json
)
例如在以下人为错误中,我在两种方法之间复制了相同的路由:
e.g. in the below contrived error, I've duplicated the same route between two methods:
[HttpGet]
[Route("parseenum")]
public ActionResult CheckEnum([FromQuery] MyEnum someEnum)
...
[HttpGet]
[Route("parseenum")]
public ActionResult CheckEnum2([FromQuery] MyEnum someEnum)
...
会产生错误:
您现在应该能够跟踪并修复。
Which you should now be able to track down and fix.
这篇关于调试Swashbuckle错误-无法加载API定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!