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

问题描述 投票:0回答:3

我创建了一个全新的 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);

接下来在配置方法中,我有,

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 控制器时,问题就开始了。

[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 core mvc 控制器。如果我注释掉 mvc 控制器,一切都会恢复正常。

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

swagger
3个回答
4
投票

尝试用 http 动词表示法装饰控制器中的方法:

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

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


3
投票

您的文档未导入。

假设您的项目是 github.com/deepaksinghvi/catalogwf 并且 docs 文件夹位于其中。

尝试按如下方式导入您的文档,它会起作用

_ "github.com/deepaksinghvi/catalogwf/docs"

0
投票

如果根路径

go.mod
中的项目模块名称是
module my-work/my-go-project
, 写这个

import _ "my-work/my-go-project/docs"
© www.soinside.com 2019 - 2024. All rights reserved.