gpt4 book ai didi

swagger - 无法使用 Swagger 加载 API 定义 500 内部服务器错误

转载 作者:行者123 更新时间:2023-12-04 17:40:55 27 4
gpt4 key购买 nike

我创建了一个全新的 Asp.net Core 2.2 Web API 应用程序。然后我如下配置了Swagger。在启动文件的 ConfigureServices 方法中,我有以下内容。

services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Title = "My API", Version = "v1"
});
});

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

接下来在 Configure 方法中,我有,

if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
else
app.UseHsts();

app.UseSwagger();
app.UseHttpsRedirection();
app.UseMvc();

app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = string.Empty;
});

到目前为止一切顺利。 Swagger UI 运行良好。当我引入一个简单的 MVC Controller 时,问题就开始了。

[Route("[controller]/[action]")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}

出现以下错误

无法加载 API 定义错误获取错误内部服务器错误/swagger/v1/swagger.json

Swagger Error with Asp.net Mvc Core Controller

似乎 Swagger 不接受 Asp.net 核心 mvc Controller 。如果我注释掉那个 mvc Controller ,一切都会恢复正常。

有没有办法解决这个问题。

最佳答案

尝试用 http 动词表示法在 Controller 中装饰你的方法:

[Route("[controller]/[action]")]
public class HomeController : Controller
{
[HttpGet, Route("myRoute")]
public IActionResult Index()
{
return View();
}
}

如果您不想放置路由,只需使用 [HttpGet] 表示法即可解决问题。

关于swagger - 无法使用 Swagger 加载 API 定义 500 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54533741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com